Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고
테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.
Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만,
전체 카펫의 크기는 기억하지 못했습니다.
Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가
매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록
solution 함수를 작성해주세요.
1. 갈색갯수 + 노란색갯수 = 가로길이 * 세로길이
2. (가로길이*2) + (세로길이*2) - 4 = 갈색갯수
function solution(brown, yellow) {
let answer = [];
let total = brown + yellow; // 총 격자 갯수
let width, height; // 가로길이, 세로길이
// 총 격자 갯수를 2부터 (총갯수/2-1)까지의 숫자로 반복해서 나누기
for(let i=2; i<total/2; i++) {
// (총갯수/i)가 정수가 아닐 경우는 제외
if((total/i) % 1 !== 0 ) continue;
width = total/i; // 가로길이 = 총갯수/i
height = total/width; // 세로길이 = 총갯수/가로길이
// 가로길이가 세로길이보다 크거나 같아야함 (조건 참고)
if(height > width) continue;
// (가로길이*2) + (세로길이*2) - 4는 brown갯수와 같아야함
if((width*2) + (height*2) - 4 === brown) {
answer = [width, height];
break;
}
}
return answer;
}
2021.04.27