[문제풀이]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
function solution(brown, yellow) {
let answer = [];
let totalSize = brown + yellow;
for (let x = 3; x <= totalSize; x++) {
let y = totalSize / x;
if (Number.isInteger(y) && y >= x && (y - 2) * (x - 2) === yellow) {
answer.push(y);
answer.push(x);
break;
}
}
return answer;
}
|
cs |
이런 문제를 풀면서 느끼는 것은 무작정 코드를 작성하는 것 보다는 규칙을 찾아서 이에 맞게 수도코드를 작성하고 진행하면 더욱 수월히 풀리는 것 같다.
문제를 읽어보고 파악해보면 최소 세로 길이(x)는 3 이상 일 수 밖에 없고
갈색과 노란색의 수를 합한 값을 세로 길이(x)로 나누었을 때 나누어 떨어져야 하며 이 때 몫은 카펫의 가로 길이(y)가 된다. 갈색 테두리 안에 노란색이 들어가 있기에 통상 직사각형의 너비를 구하는 식을 이용해 가로 길이(y)에서 2를 뺀 값과 세로 길이(x)에서 2를 뺀 값을 곱했을 때 yellow가 나와야 하며 Number.isInteger() 메서드는 주어진 값이 정수인지 판별하는 것이다.
그리고 answer에 가로 길이(y)와 세로 길이(x)를 각각 push 하는 식으로 구현했다.
'프로그래머스' 카테고리의 다른 글
6/24[문제풀이] 프로그래머스 Lv2 땅따먹기 (0) | 2021.06.24 |
---|---|
6/16[문제풀이] 프로그래머스 Lv2 위장 (0) | 2021.06.16 |
6/15[문제풀이] 프로그래머스 Lv2 다리를 지나는 트럭 (0) | 2021.06.15 |
6/14[문제풀이] 프로그래머스 Lv2 오픈채팅방 (0) | 2021.06.14 |
6/9[문제풀이] 프로그래머스 Lv2 문자열 압축 (0) | 2021.06.09 |