알고리즘
[Javascript] 프로그래머스 - 카펫
J3SUNG
2025. 1. 8. 20:58
728x90
문제 설명
갈색 격자 수 brown과 노란색 격자 수 yellow가 주어질 때, 카펫의 가로와 세로 크기를 구하는 함수를 작성하세요.
제한사항
- brown: 8 이상 5,000 이하인 자연수
- yellow: 1 이상 2,000,000 이하인 자연수
- 가로 길이 ≥ 세로 길이
해결 방법
알고리즘: 완전 탐색 (Brute Force)
구현 방법
- 탐색 범위는 Math.floor(brown / 2) + 2를 기반으로 설정합니다.
- 세로 길이(height)를 3부터 탐색 범위까지 반복하며, 가로 길이(width)를 계산합니다.
- 조건을 만족하면 [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];
}
}
}