반응형

프로그래머스 - 알고리즘 고득점 Kit 완전탐색 편

 

완전탐색 네 번째 문제입니다.

 

카펫 - 완전탐색

 

 

문제풀이

function solution(brown, yellow) {
    const area = brown + yellow;
    let w = 0;    
    let h = 3;
    const result = [];
    
    while(true) {
        w = Math.floor(area / h);
        
        if(w < h) break;
        
        const yellowArea = (w-2) * (h-2);
        
        if(yellowArea === yellow) {
            result.push(...[w,h]);
            break;
        }
        
        h++;
    }
    
    return result;
}

 

이 코드는 카펫의 테두리 갈색(brown) 격자 수와 내부 노란색(yellow) 격자 수가 주어졌을 때, 전체 카펫의 가로(w)와 세로(h) 크기를 찾는 함수입니다.



주요 로직은:
  1. 전체 면적(area)을 구합니다 (brown + yellow)
  2. 세로(h)는 최소 3부터 시작 (테두리가 있어야 하므로)
  3. 가로(w)는 전체 면적을 세로로 나눈 값
  4. 내부 노란색 영역은 (가로-2) × (세로-2)로 계산
  5. 계산된 노란색 영역이 주어진 yellow와 같으면 [w, h]를 반환

while문은 가로가 세로보다 작아지기 전까지 세로값을 1씩 증가시키면서 조건을 만족하는 크기를 찾습니다.

반응형