const check=(factor, brown, yellow)=>{
let isRight=false;
factor.sort((a,b)=>b-a);
if ((factor[0]+2)*(factor[1]+2)===(brown+yellow)){
isRight=true;
}
return isRight;
}
function solution(brown, yellow) {
var answer = [];
// yellow의 인수들을 다...
for (let i=1;i<=Math.ceil(Math.sqrt(yellow));i++){
let factor=[];
if (yellow%i===0){
factor.push(i, yellow/i);
}
if (check(factor, brown, yellow)){
factor[0]=factor[0]+2;
factor[1]=factor[1]+2;
answer=factor;
}
}
answer.sort((a,b)=>b-a);
return answer;
}
내 코드 설명
우선 노란색 격자 개수의 인수를 모두 구해야 한다. 그리고 구한 인수들 중 정답인 것을 찾아야 하는데 이건 width(노란색 격자 너비+2)와 height(노란색 격자 높이+2)를 곱한 것이 갈색 격자 개수+노란 격자 개수와 동일한지 확인하면 된다.