
문제 풀이
- 그리디로 정렬 후 deque에서 하나씩 뽑아가며 보내면 되는 문제인데 주어진 조건 중 보트에는 최대 2명만 탈 수 있습니다 를 못봐서 몇 번 틀렸습니다. 제한사항에 안적어둬서 방심했네요..
- while 문 속의 if 문에 people을 확인하는 이유가 최대 2인을 맞추려는데 아무도 없으면 안되기 때문입니다. 이외에는 틀릴 여지는 별로 없겠네요.
from collections import deque
def solution(people, limit):
answer = 0
people = deque(sorted(people))
while people:
# 가장 무거운 사람을 일단 꺼냄
heavy = people.pop()
# 가장 가벼운 사람도 같이 탈 수 있는지 확인
if people and heavy + people[0] <= limit:
people.popleft()
# 어떤 경우든 보트는 하나 필요함
answer += 1
return answer반응형
'프로그래머스 - Python > Level 2' 카테고리의 다른 글
| [프로그래머스 LV.2] 짝지어 제거하기 (0) | 2026.02.25 |
|---|---|
| [프로그래머스 LV.2] 의상 (0) | 2026.02.19 |
| [프로그래머스 LV.2] 멀리 뛰기 (0) | 2026.02.09 |
| [Python LV.2] 가장 큰 수 (0) | 2026.02.05 |
| [MySQL LV.2]동명 동물 수 (0) | 2026.01.14 |