
✅ 2명만 태울 수 있다
순서대로 태워야 한다는 말도 없고, 2명의 무게를 합쳐서 limit를 넘는지 아닌지 여부가 중요하기 때문에 우선 무게 순으로 정렬
heavy와 light 는 각각 현재 기준 가장 무거운/가벼운 사람을 나타낸다.
무거운 사람(heavy)과 가벼운 사람(light)을 같이 태울 수 있나 비교해서 태울 수 있으면 둘 다 태운다. 만약 태울 수 없다면 무거운 사람만 태우고 가벼운 사람은 태우지 않음. 어차피 현재 기준으로 가장 가벼운 사람을 현재 기준 가장 무거운 사람과 함께 태울 수 없다면 이 무거운 사람은 더 가벼운 사람과는 탈 수 없기 때문에 혼자 타야한다.
이런식으로 반복해서 가벼운 사람의 인덱스가 무거운 사람의 인덱스보다 커지게 되면 종료한다.
def solution(people, limit):
answer = 0
# 가벼운 것 → 무거운 것 순서로 정렬
people.sort()
light, heavy = 0, len(people)-1
# 무거운 것 + 가벼운 것의 무게가 limit을 넘으면 둘 다 태우고
# 넘지 못하면 무거운 것만 태움
while light <= heavy:
if people[light] + people[heavy] <= limit:
light += 1
heavy -= 1
answer += 1
return answer