프로그래머스 Lv.2: 카펫

Steve·2021년 11월 13일
0

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];
        }
    }
}
profile
게임과 프론트엔드에 관심이 많습니다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN