끄적끄적 코딩
728x90

문제 설명

갈색 격자 수 brown과 노란색 격자 수 yellow가 주어질 때, 카펫의 가로와 세로 크기를 구하는 함수를 작성하세요.


제한사항

  • brown: 8 이상 5,000 이하인 자연수
  • yellow: 1 이상 2,000,000 이하인 자연수
  • 가로 길이 ≥ 세로 길이

해결 방법

알고리즘: 완전 탐색 (Brute Force)

구현 방법

  1. 탐색 범위는 Math.floor(brown / 2) + 2를 기반으로 설정합니다.
  2. 세로 길이(height)를 3부터 탐색 범위까지 반복하며, 가로 길이(width)를 계산합니다.
  3. 조건을 만족하면 [width, height]를 반환합니다.

시간 복잡도

  • 탐색: O(N)

구현 코드

function solution(brown, yellow) {
  const outline = Math.floor(brown / 2) + 2;

  for (let height = 3; height <= outline - 3; ++height) {
    const width = outline - height;
    const center = width * height - brown;

    if (center === yellow) {
      return [width, height];
    }
  }
}

검색 태그