문제
people
을 정렬한 후 people
에서 보트에 타지 않은 무게가 가장 낮은 사람과
무게 합이 limit이하인 사람중 가장 limit에 가까운 사람을 조합하여야 한다.
def solution(people, limit):
answer = 0
people.sort(reverse = True)
while people:
k = people.pop()
for i in range(len(people)):
if k + people[i] <= limit:
people.pop(i)
break
answer += 1
return answer
다만 위 풀이처럼 리스트와 pop()
을 이용할 시 효율성테스트에서 탈락하게 된다.
이에 근본적인 문제해결법은 같지만 인덱스를 기준으로 풀이를 진행하면 더욱 빠르게 문제를 해결 할 수 있다.
def solution(people, limit):
answer = 0
people.sort()
i, j = 0, len(people)-1
while i <= j:
if people[i] + people[j] <= limit:
i += 1
j-=1
answer += 1
return answer