https://school.programmers.co.kr/learn/courses/30/lessons/86491
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
✓ 문제
다양한 명함의 크기를 모두 수납 가능한 지갑의 크기 (가로 X 세로)를 구하라
단, 명함의 가로 세로를 변경해서 수납할 수 있음
✓ 풀이과정
1. 명함들의 가로, 세로 값을 배열(sizes)로 전달받으면 작은 것을 가로(w)로 큰 것을 세로(h)로 정렬
2. 가로에서 가장 큰 값과 세로에서 가장 큰 값을 찾아서 저장(walletSize)하고 가로 x 세로를 계산하여 지갑의 크기 반환
1번의 정렬 과정을 거치는 이유는

위와 같은 다양한 크기의 사각형이 있을 때 이 모든 사각형을 포함할 수 있는 영역의 크기를 계산하려면 가장 큰 가로와 세로의 값을 구하면 되지만 현재 문제에서는 명함을 돌릴 수 있다는 조건이 포함되어 있기 때문에 가장 효율적으로 크기를 계산하기 위해서 전달받은 [가로, 세로] 중에 [작은 값을 가로, 큰 값을 세로]로 정렬한 후 계산했습니다 (여기서 어떤 값을 가로 또는 세로로 둘지는 상관이 없음)
✓ 최종코드
function solution(sizes) {
let walletSize = [0, 0];
for (const size of sizes) {
let [w, h] = size.sort((a, b) => a - b);
if (walletSize[0] < w) walletSize[0] = w;
if (walletSize[1] < h) walletSize[1] = h;
}
return walletSize[0] * walletSize[1];
}'프로그래머스 > Lv1' 카테고리의 다른 글
| [프로그래머스/Javascript] Lv.1 기사단원의 무기 (0) | 2026.01.28 |
|---|---|
| [프로그래머스/Javascript] Lv.1 체육복 (0) | 2026.01.28 |
| [프로그래머스/Javascript] Lv.1 폰켓몬 (0) | 2026.01.27 |
| [프로그래머스/Javascript] Lv.1 덧칠하기 (0) | 2026.01.27 |
| [프로그래머스/Javascript] Lv.1 옹알이 (0) | 2026.01.27 |