cykim43 / Algorhythm

Feel My Rhythm🎵
0 stars 0 forks source link

[Lv. 1] 최소직사각형 #3

Open cykim43 opened 1 year ago

cykim43 commented 1 year ago

아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다.

명함 번호 가로 길이 세로 길이
1 60 50
2 30 70
3 60 30
4 80 40

가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때의 지갑 크기는 4000(=80 x 50)입니다.

모든 명함의 가로 길이와 세로 길이를 나타내는 2차원 배열 sizes가 매개변수로 주어집니다. 모든 명함을 수납할 수 있는 가장 작은 지갑을 만들 때, 지갑의 크기를 return 하도록 solution 함수를 완성해주세요.

제한사항
입출력 예
sizes result
[[60, 50], [30, 70], [60, 30], [80, 40]] 4000
[[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120
[[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133
입출력 예 설명

입출력 예 #1 문제 예시와 같습니다.

입출력 예 #2 명함들을 적절히 회전시켜 겹쳤을 때, 3번째 명함(가로: 8, 세로: 15)이 다른 모든 명함보다 크기가 큽니다. 따라서 지갑의 크기는 3번째 명함의 크기와 같으며, 120(=8 x 15)을 return 합니다.

입출력 예 #3 명함들을 적절히 회전시켜 겹쳤을 때, 모든 명함을 포함하는 가장 작은 지갑의 크기는 133(=19 x 7)입니다.

cykim43 commented 1 year ago

정확성: 100.0 합계: 100.0 / 100.0

def solution(sizes):
answer = 0
tmp = 0
max_w = 0
max_h = 0
for i in sizes:
if i[0] < i[1]:
tmp = i[0]
i[0] = i[1]
i[1] = tmp
for i in sizes:
if i[0] > max_w:
max_w = i[0]
if i[1] > max_h:
max_h = i[1]
answer = max_w * max_h
return answer