https://school.programmers.co.kr/learn/courses/30/lessons/86491
모든 명함의 가로 길이와 세로 길이를 나타내는 2차원 배열 sizes가 매개변수로 주어집니다. 모든 명함을 수납할 수 있는 가장 작은 지갑을 만들 때, 지갑의 크기를 return 하도록 solution 함수를 완성해주세요.
각 지갑의 사이즈를 확인합니다. w, h를 이용하여 sizes를 순회하면서 가로/세로 길이가 w, h보다 작을 경우 다음 size로 넘어갑니다. 그렇지 않을 경우, 가로/세로 길이를 비교하여 작은 넓이를 갖는 것을 선택하고 w, h를 갱신합니다.
import sys
input = sys.stdin.readline
def solution(sizes):
w, h = sizes[0][0], sizes[0][1]
answer = w * h
for i in range(1, len(sizes)):
if w >= sizes[i][0] and h >= sizes[i][1]:
continue
elif w >= sizes[i][1] and h >= sizes[i][0]:
continue
else:
temp_w1 = max(w, sizes[i][0])
temp_h1 = max(h, sizes[i][1])
temp_w2 = max(w, sizes[i][1])
temp_h2 = max(h, sizes[i][0])
if temp_w1 * temp_h1 > temp_w2 * temp_h2:
w = temp_w2
h = temp_h2
answer = w * h
else:
w = temp_w1
h = temp_h1
answer = w * h
return answer