최소직사각형 문제 바로가기

나의 풀이

enumerate 함수로 input을 쪼개주고 각 케이스별로 최대/최소를 각각 따져주었다. 다만 어떤건 가로가 길고 어떤 건 세로가 더 길기 때문에 모두 가로가 더 길도록 정렬해주는 작업이 추가로 필요했다.

def solution(sizes):
    max_w, max_h = 0, 0
    for _, wh in enumerate(sizes):
        w,h = max(wh),min(wh)
        if w > max_w:
            max_w = w
        if h > max_h:
            max_h = h
    return max_w * max_h

고수의 풀이

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

출처

다른 분들의 풀이를 구경했는데, 두줄로 끝내버린 분들도 계셨다. input으로 들어오는 값들 중에 큰 값의 최댓값과, 작은 값의 최댓값의 곱이 곧 정답이기에 위처럼 풀 수도 있다. 하지만 메모리 사용량이 늘어나서 과연 좋은 풀이인지에 대해서는 생각해볼 필요가 있다.