[JS] 프로그래머스 카펫

bepyan·2021년 4월 26일
1

알고리즘

목록 보기
9/16

문제링크

https://programmers.co.kr/learn/courses/30/lessons/42842

코드

  1. 전체 격자수를 구한다.
  2. 전체 격자수에 해당되는 레이아웃을 구한다.
  3. 레이아웃에 해당되는 갈색 격자수 = 테두리 격자수 = 2*(a+b) - 4
function solution(brown, yellow) {
    const cand = [];
    const size = brown + yellow;
    for (var r = 3; r <= Math.sqrt(size); r++)
        if (size % r === 0)
            cand.push([size / r, r])
    return cand.filter(([a, b]) => 2 * (a + b) - 4 === brown)[0];
}

어짜피 정답은 하나 뿐이니 코드 최적화


function solution(brown, yellow) {
    const size = brown + yellow;
    var row = 3;
    while(row <= Math.sqrt(size)){
        if(size % row === 0 && 2 * (size/row + row) - 4 === brown)
            break;
        row++;
    }
    return [size/row, row];
}
profile
쿠키 공장 이전 중 🚛 쿠키 나누는 것을 좋아해요.

0개의 댓글