728x90
다른 사람의 풀이
def solution(people, limit):
from collections import deque
people.sort()
people = deque(people)
length = len(people)
answer = 0
while length != 0:
limit_p = limit
temp = 0
pop = people.pop()
length -= 1
temp += pop
limit_p -= pop
if length >= 1:
pop_r = people[0]
if limit_p >= pop_r:
people.popleft()
length -=1
answer+=1
return answer
최상위 조건으로는 pop <= limit 일 경우 ans += 1인데
이는 문제에서
"구명보트의 무게 제한은 항상 사람들의 몸무게 중 최댓값보다 크게 주어지므로
사람들을 구출할 수 없는 경우는 없습니다."
라고 언급되어있기 때문에 pass
이 조건 하에서는 이제
2가지 조건을 만족시키도록 구현하면 된다.
1. 한 사람만 들어갈 수 있는 경우
2. 두 사람만 들어갈 수 있는 경우
- 2가지 경우 모두 count += 1
- pop을 하면서 큐 자료구조를 사용하면 된다.
- 다만, 2번의 경우 다음 element와 pop한 element를 합친 결과를 비교해야되는데, next element의 경우 pop을 하지않고 zero idx의 값을 가져와서 비교한 후 limit 보다 less or equal to 일 경우, 즉 조건이 만족되면 pop을 해줌으로써 기존 queue에서 제거
728x90
댓글