https://programmers.co.kr/learn/courses/30/lessons/42842
곱해서 카펫의 크기가 되는 수를 찾는, 즉 약수 관련 문제다.
문제를 풀긴 했지만 좀 복잡하게 풀어서 다른 사람의 풀이로 고쳤다.
i
는 세로길이를 의미하며, 최소 3 이상이기에 3부터 시작한다.
만약에 i
가 3의 약수고(3으로 나누어 떨어지고), 가로길이(size/i)
이하라면, 실제 갈색 타일이나 노란색 타일의 갯수를 구해서 비교하면 된다.
function solution(brown, yellow) {
let size = brown + yellow;
for (let i = 3; i <= size/3; i++){
if (size % i === 0 && i <= size/i) {
let w = size/i, h = i;
let edge = w*2 + (h-2)*2;
// let center = (w-2) * (h-2)
if (edge === brown) return [w,h];
}
}
}