Lv.2 : 카펫 [JavaScript]

2022. 10. 26. 22:14Algorithm/프로그래머스

반응형

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 풀이

function solution(brown, yellow) {
    var answer = [];
    
    for(var i=yellow; i>0; i--){
        var [w, h] = [i, yellow/i];
        if(!Number.isInteger(h)) continue;
        
        if((w*2 + h*2 + 4) == brown){
            answer.push(w+2);
            answer.push(h+2);
            break;
        }
    }
    
    return answer;
}

노란색을 기준으로 생각하도록 한다

 

일단 중앙 노란색 부분의 가로와 세로 길이를 정한다

가로길이가 세로 길이보다 같거나 길기 때문에 가로를 yellow부터 시작해 줄여나가며, 세로는 yellow에서 가로를 나눈 값으로 한다.

만약 세로가 int가 아니라면 건너뛰기

 

노란 부분을 둘러싸는 갈색 부분은 노란 부분의 가로 * 2 + 세로 * 2 + 모서리 4 이므로

w*2 + h*2 + 4가 brown과 같다면 총카펫의 가로, 세로는 노란 부분의 가로, 세로에 모서리 2를 더해준다.

반응형