https://school.programmers.co.kr/learn/courses/30/lessons/42842
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
✓ 문제
노란 카펫의 갯수 yellow 와 그 카펫을 감싸는 1줄 테두리인 갈색 카펫의 갯수 brown 으로 전체 카펫의 [가로, 세로]를 반환
카펫은 정사각형이거나, 가로로 긴 직사각형
✓ 풀이과정

임의의 h 기준으로 하나씩 증가하며 아래 조건을 만족하는 w를 발견
- 1개의 노란색 카펫의 테두리가 되는 2개의 갈색 카펫이 있기 때문에 카펫의 최소 h = 3
- 카펫은 정사각형 또는 가로가 긴 직사각형이라는 조건이 있으므로 h <= w 인데 카펫의 총 개수는 가로 * 세로와 동일 carpets(brown + yellow) = w * h, w = carpets / h 따라서 h <= carpets / h 까지만 확인
- 노란색 카펫은 갈색 테두리 한 줄을 제외한 만큼이기 때문에 yellow = (w - 2) * (h - 2)
✓ 최종코드
function solution(brown, yellow) {
let carpets = brown + yellow;
let h;
let w;
for (h = 3; h <= carpets / h; h++) {
w = carpets / h;
if (carpets % h === 0 && yellow === (w - 2) * (h - 2)) break;
}
return [w, h];
}'프로그래머스 > Lv2' 카테고리의 다른 글
| [프로그래머스/Javascript] Lv.2 기능개발 (0) | 2026.02.09 |
|---|---|
| [프로그래머스/Javascript] Lv.2 H-Index (0) | 2026.02.06 |
| [프로그래머스/Javascript] Lv.2 구명보트 (0) | 2026.02.04 |
| [프로그래머스/Javascript] Lv.2 N개의 최소공배수 (0) | 2026.02.02 |