코딩테스트
프로그래머스 구명보트
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