처음에 생각한 것은 리스트에서 2개의 조합을 구해 limit를 넘지 않는 경우의 수를 모두 구하고 가장 많은 쪽을 택하려 했지만 구현이 너무 어렵고, 조합을 구한 후 제외시켜야 하기 때문에 리스트도 따로 만들어 체크해야 하기 때문에 메모리 낭비가 어마어마하다. 좀 더 쉽게 생각한 것이 다음과 같다.
def solution(people, limit):
people = sorted(people)
answer = len(people)
start = 0
end = len(people) - 1
if end == 0:
return 1
else:
while start < end:
tot = people[start] + people[end]
if tot > limit:
end -= 1
else:
answer -= 1
start += 1
end -= 1
return answer