[프로그래머스 Lv.2] 알고리즘 고득점 Kit 완전탐색 - 카펫

김민지·2024년 4월 21일
0

✨ 정답 ✨

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)를 곱한 것이 갈색 격자 개수+노란 격자 개수와 동일한지 확인하면 된다.

profile
이건 대체 어떻게 만든 거지?

0개의 댓글

관련 채용 정보