https://programmers.co.kr/learn/courses/30/lessons/86491?language=python3
풀이 과정
- 지갑 크기를 명함 크기들과 순차적으로 비교하면서 갱신해 나간다.
- 기존 지갑 크기보다 명함의 크기가 더 크다면 갱신하는 방식
- 명함을 가로 방향과 세로 방향으로 집어넣을수 있으므로 각각의 케이스에 맞추어서 지갑의 크기를 갱신해 보고 지갑이 최소 넓이가 되는 경우로 지갑의 크기를 갱신시켜 준다.
- 최종적으로 갱신된 지갑의 넓이를 리턴해주면 된다.
소스 코드
def solution(sizes):
answer = 0
card_w = 0
card_h = 0
for w, h in sizes:
temp_w1, temp_h1 = max(w, card_w), max(h, card_h)
temp_w2, temp_h2 = max(w, card_h), max(h, card_w)
if temp_w1 * temp_h1 < temp_w2 * temp_h2:
card_w, card_h = temp_w1, temp_h1
else:
card_w, card_h = temp_w2, temp_h2
answer = card_w * card_h
return answer
'알고리즘[Python] > 프로그래머스' 카테고리의 다른 글
[ 위클리 챌린지 ] [ 10주차 ] 교점에 별 만들기 (0) | 2021.10.12 |
---|---|
[ 위클리 챌린지 ] [ 9주차 ] 전력망을 둘로 나누기 (0) | 2021.10.07 |
[ Lv 5 ] [ 그래프 ] 방의 개수 (0) | 2021.09.21 |
[ Lv 4 ] [ DP ] 3 x n 타일링 (0) | 2021.09.19 |
[ Lv 4 ] [ DP ] 도둑질 (0) | 2021.09.18 |