[프로그래머스] 최소직사각형 Lv.1 - [파이썬/python]
https://school.programmers.co.kr/learn/courses/30/lessons/86491
문제 설명
모든 명함을 수납할 수 있는 가장 작은 지갑의 크기를 반환(return)하는 문제입니다.
※ 제한사항
- sizes의 길이는 1 이상 10,000 이하입니다.
- sizes의 원소는 [w, h] 형식입니다.
- w는 명함의 가로 길이를 나타냅니다.
- h는 명함의 세로 길이를 나타냅니다.
- w와 h는 1 이상 1,000 이하인 자연수입니다.
더보기
이 문제의 핵심 아이디어는 가로 길이와 세로 길이를 최대로 활용하여 명함을 수납할 수 있는 최소 크기의 지갑을 찾는 것입니다.
- 첫번 째로 전체 명함 중에서 가장 큰 최대값을 찾습니다.
- 두번 째로 명함 하나하나의 가로 길이와 세로길이 중 더 작은 값들을 모아 그 중에 가장 큰 최대값을 찾습니다.
- 이 두 값을 곱해 최소 크기의 지갑을 계산합니다. 이렇게 하면 모든 명함을 수납할 수 있는 가장 효율적인 지갑 크기를 얻을 수 있습니다.
정답 주의!!!
def solution(sizes):
max_width = max_height = 0
# 모든 명함의 가로 길이와 세로 길이를 순회합니다.
for size in sizes:
width, height = size
# 현재 명함의 가로 길이와 세로 길이 중에서 최대값을 최대 가로 길이로 갱신합니다.
max_width = max(max_width, width, height)
# 현재 명함의 가로 길이와 세로 길이 중에서 최소값을 최대 세로 길이로 갱신합니다.
max_height = max(max_height, min(width, height))
# 최대 가로 길이와 최대 세로 길이를 곱하여 최소 크기의 지갑을 반환합니다.
return max_width * max_height
728x90
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 과일 장수 - Lv.1 (32) | 2023.09.12 |
---|---|
[프로그래머스] 다트 게임 - Lv.1 (31) | 2023.09.12 |
[프로그래머스] 기능개발 - Lv.2 (43) | 2023.09.02 |
[프로그래머스] 저주의 숫자 3 - Lv.0 (43) | 2023.09.01 |
[프로그래머스] 문자열 내림차순으로 배치하기 - Lv.1 (23) | 2023.09.01 |