https://school.programmers.co.kr/learn/courses/30/lessons/42842?language=javascript
- 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.
- 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.
- 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.
function solution(brown, yellow) {
let result = [];
let sum = brown + yellow;
for(let height = 3; height < brown; height++){
if(sum % height === 0){
weight = sum / height;
if((height - 2) * (weight - 2) === yellow){
result = [height, weight];
}
}
}
return result;
}
우선 카펫의 최소 높이는 3입니다. 3 미만으로는 카펫을 만들 수 없습니다.
따라서 (height - 2) * (weight - 2) === yellow 라면 문제가 원하는 결과값을 찾은 것입니다.
요렇게 보면 더 쉽게 문제를 이해할 수 있습니다.
위 문제는 코드 작성보다 세로의 길이 값이 3이라는 것을 알 수 있어야 하고, 공식 (height - 2) * (weight - 2) === yellow에 대한 이해가 필요합니다.
-2를 하는 이유는 각 사이드가 밤색이기 때문입니다.