구명보트 1개에 최대 2명까지 태울 수 있다
def solution(people, limit):
answer = 0
people.sort(reverse=True)
while len(people)>1:
if people[0]+people[-1]<=limit:
answer += 1
people.remove(people[0])
people.remove(people[-1])
else:
answer += 1
people.remove(people[0])
if people:
answer += 1
return answer
위 코드를 썼다가 정확성은 다 맞았는데, 효율성이 제로였다
코드를 좀 더 찾아보니까 투 포인터를 쓰더라
def solution(people, limit):
answer = 0
people.sort()
start = 0
end = len(people)-1
while start <= end:
if people[start] + people[end] <= limit:
start += 1
answer += 1
end -= 1
return answer
가장 무거운 사람, 가장 가벼운 사람을 합쳐도 limit을 넘지 않으면 둘 다 한 칸씩 이동한다
아니면 가장 무거운 사람쪽만 한 칸 이동한다