카펫 자바스크립트

HyosikPark·2020년 11월 25일
0

알고리즘

목록 보기
40/72
function solution(brown, yellow) {
    const totalSpace = brown + yellow;
  
    for(let i = Math.floor(totalSpace/3); i >= 3; i--) {
        if(totalSpace % i) continue;
        
        let width = i;
        let height = totalSpace / i;
        
        if((width - 2) * (height - 2) == yellow) {
          return [width, height]
        }
    }    
}

우선 노란색 격자는 1행 1열 이상을 차지하기 때문에 총 격자는 3열 3행 이상이어야한다.
그리고 구하려는 width와 height는 총격자 수의 약수들의 곱으로 이루어져야 한다.

width가 height보다 더 크다고 했으므로 width를 찾기위해 반복문을 역순으로 돌린다. width를 찾으면 height는 자동으로 찾아지고 width와 height에 각 -2를 해 준 값의 곱이 yellow격자 수와 같다면 정답이 도출된다.

0개의 댓글