코딩테스트

프로그래머스 구명보트

yolang 2024. 6. 5. 23:40
728x90

 

🔗 프로그래머스 -구명보트

 

어제에 이어 Greedy 문제였는데 잘 못하는 것임이 확실하다!

Greedy하게 결정하는 방법을 잘 모르겠다. 하지만 해봐야지!

사실 오늘은 조금 cheating을 했다.😏

 

구명 보트를 가장 적게 사용하면서 승객을 옮겨야 하는데 생각한 알고리즘이

제일 무거운 사람을 뽑아서 그 사람이랑 가장 많이 태워서 보내는 것이었는데 너무 복잡하게 생각했다.

그저 무거운 사람이랑 같이 갈 수 있는 제일 가벼운 사람이 있으면 보내고 아니면 그냥 무거운 사람만 보내는 방법이었다. 

이렇게 간단하게 생각하는 방법을 좀 연습해야겠다....

from collections import deque


def solution(people, limit):
    answer = 0
    people.sort()
    people = deque(people)

    while people:
        person = people.pop()
        try:
            light = people.popleft()
            if person + light > limit:
                people.appendleft(light)
            answer += 1
        except:
            answer += 1

    return answer
 
728x90