[etc] 완전탐색 카펫
카펫
고민
갈색이 10개 노랑색이 2개면 총 12개의 칸이 존재함…
그렇다면 나올 수 있는 사각형이 -> [1,12], [2,6], [3,4], [4,3], [6,1], [12,1]
가로의 길이가 세로의 길이보다 같거나 길다고 했으니깐 -> [4,3], [6,2], [12,1]
그리고 테두리에 세로가 2보다 작으면 노랭삭이 없으니깐 ->[4,3], [6,2]
그리고 갈색이랑 노랑색의 갯수를 확인하면
내풀이
function solution(brown, yellow) {
var answer = [];
var tot = brown + yellow;
var cnt=0;
var x;
var y;
while(true){
cnt++;
if( tot % cnt != 0 ) continue;
x = tot / cnt;
y = tot / x;
if( x < y) continue;
if( y < 2 ) continue;
if( brown != (2*x) + (y-2)*2 ) continue;
if( yellow != ((y-2) * x) - (y-2)*2 ) continue;
break;
};
return [x,y]
}
나는 이렇게 무식하게 풀었지만
다른 멋진 풀이
function solution(brown, yellow) {
const totalSpace = brown + yellow;
for(let i = Math.floor(totalSpace / 2); i > 0; i--){
if(totalSpace % i !== 0) continue;
const width = i;
const height = totalSpace / i;
if((width - 2) * (height - 2) === yellow){
return [width, height];
}
}
};