프로그래머스/알고리즘 고득점 Kit

[프로그래머스] [완전탐색] Lv.1 /최소직사각형 (파이썬/Python)

junslee 2025. 6. 2. 16:40

1. 문제 설명

2. 코드 

def solution(sizes):
    rotated = [(max(w,h),min(w,h)) for w,h in sizes]
    max_w = max(w for w,h in rotated)
    max_h = max(h for w,h in rotated)
    return max_w * max_h

3. 풀이 과정

리스트 sizes에서 w와 h를 받아서 만들수 있는 최소한의 직사각형을 찾는 문제이다.

w,h는 원한다면 바뀌어도 되므로

rotated변수에 sizes의 원소를 w,h로 받아 max()값을 먼저 받고, min()값을 받아서 저장해둔다.

w의 최댓값 max_w는 rotated의 w,h 중 w로 max()로 최댓값을 구한다.

h의 최댓값은 w를 h로만 바꿔 진행하면 된다.

마지막으로 max_w와 max_h를 반환하면 된다.

4. 추천 코드

def solution(sizes):
    return max(max(x) for x in sizes) * max(min(x) for x in sizes)

5. 추천 코드의 풀이 과정

sizes에 값을 x로 받아 그 중 최대를 max()으로 찾아서 그 중 max()값을 구한다.

반대로 최소를 min()으로 찾아서 그 중 max()값을 구한다.

그리고 두 값을 곱해서 반환한다.

나보다 과정이 더 간략해서 괜찮은 풀이인 것 같다.