사람들의 몸무게와 배에 태울 수 있는 최대 무게가 주어졌을 때, 배를 몇 대를 사용해야 하는지 구하는 문제다.
- 몸무게 순으로 사람을 정렬하고,
left
와right
를 활용해 가장 가벼운 사람과 가장 무거운 사람을 가리키도록 한다.- 모든 사람을 배에 태울 때 까지,
while
문을 돌며left
가 가리키는 사람 +right
가 가리키는 사람의 값이 배의 최대무게보다 덜 나갈 경우, 배 1개를 사용해 2명을 태운다.- 그렇지 못할 경우, 배 1개를 사용해 무거운 사람을 담는다.
- 배 1개에는 2명밖에 타지 못하기에 가능한 방법
def solution(people, limit):
answer = 0
people.sort()
left = 0
right = len(people) -1
while left <= right:
if people[left] + people[right] <= limit:
answer += 1
left += 1
right -=1
else:
answer += 1
right -= 1
return answer