굳이 값을 변수화 하지 않았다면 코드 라인은 더 짧아질 수 있었을 것 같지만 가독성 면에서는 좋지 않다고 생각해서 변수명을 달아주었다.
function solution(brown, yellow) {
const area = brown + yellow;
const result = [];
//yellow가 될 수 있는 너비 * 높이 조합을 찾는다.
for(let i = 0; i * i <= yellow; i++) {
if(yellow % i === 0) {
//width >= height이라는 조건이 있기 때문에 큰 수를 너비로, 작은 수를 높이로 본다.
const yellowWidth = yellow / i;
const yellowHeight = i;
//갈색 격자의 너비는 노란격자 너비 + 2
//갈색 격자이 높이는 노란격자 높이 + 2
const brownWidth = yellowWidth + 2;
const brownHeight = yellowHeight + 2;
//위에서 구한 갈색격자 너비 * 갈색격자 높이가 주어진 전체 카펫의 면적과 일치하면
//정답이 되는 너비, 높이이다.
if(((yellow / i) + 2) * (i + 2) === area) {
result.push(brownWidth, brownHeight);
break;
}
}
}
return result;
}
'Algorithm > 문제풀이' 카테고리의 다른 글
Programmers - 124 나라의 숫자 / Javascript (0) | 2021.02.14 |
---|---|
Programmers - 단어변환 / Javascript (0) | 2021.01.14 |
Programmers - 모의고사 / Javascript (0) | 2021.01.11 |
Programmers - 이중우선순위 큐 / Javascript (0) | 2021.01.10 |
Programmers - 다리를 지나는 트럭 / Javascript (0) | 2020.10.01 |