[Javascript] 프로그래머스 완전탐색:카펫

이두팔·2021년 1월 1일
0

프로그래머스

목록 보기
6/9

문제

Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.

Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.

해설


  // brown + yellow = (yellow_row + 2) * (yellow_col + 2)
  function solution(brown, yellow) {
    const answer = [];
    
    for (let i = (brown + yellow); i > 1; i--) {
      // brown, yellow의 약수 찾기
      if ((brown + yellow) % i === 0) {
        // col의 가능성이 있는 친구들 찾기
        let col = (brown + yellow) / i + 2
        // col은 이미 2를 더한 값이기 때문에 아래에서는 총 4를 빼준다.
        if ((col - 4) * (i - 2) === yellow) {
          // 큰 값이 row, 작은 값이 col
          const max = Math.max(...[i, col - 2]);
          const min = Math.min(...[i, col - 2]);
          
          // 최종 정답
          answer.push(max, min)
          
          // 찾으면 멈춰준다
          break;
        }
      }
    }
    
    return answer;
  }
profile
Software Engineer

0개의 댓글