문제


풀이

정확성 테스트에서는 통과하는데, 일부 20%정도의 효율성 테스트에서 통과하지 못하는 경우도 있었다.

그 이유는 아마도 pop(0)연산이 첫 번째 index의 element를 지운 후, 한 칸씩 앞으로 당기는 연산이기 때문에 O(1) 이 아닌 O(n) 이 되기 때문인 것 같다.

정확성 테스트를 마저 해결하려면 collections.deque()로 만들어 popleft()를 사용하면 될 듯 하다.

def solution(people, limit):
    people.sort(reverse=True)

    idx = 0
    cnt = 0
    n = len(people)
    while idx<n-1:
        if people[idx]+people[-1]<=limit:

            people.pop(idx)
            people.pop()
            idx = 0
            cnt += 1
        else:
            idx += 1
        n = len(people)

    answer = cnt + len(people)
    return answer


Reference

https://programmers.co.kr/learn/courses/30/lessons/42885