[프로그래머스 LV.2] 구명 보트

문제 풀이

  • 그리디로 정렬 후 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
반응형