못푸는가.
형들 도와줘.. 나 효율성 못하겠어
난 왜 이렇게 멍청한걸까
def solution(people, limit):
people.sort()
cnt=0
i=0
j=0
while(len(people)!=0):
a=people[i]+people[len(people)-1-j]
if(a>limit and (len(people)-1-j)!=i ):
j=j+1
else:
cnt=cnt+1
if(i!=(len(people)-1-j)):
del people[len(people)-1-j]
del people[i]
j=0
else:
del people[len(people)-1-j]
j=0
return cnt
Python의 list에서 del을 실행하면 새로 index를 한 칸씩 옮겨야 해서 최악의 경우 O(n) 입니다. 제가 코드를 잘 이해하진 못했으나, O(n)에 가까운 del이 여러번 실행되는 코드 같습니다. 굳이 del을 하지 않도록 코드를 수정하거나, 제일 앞/뒤에서만 원소를 제거하는 방식으로 수정해보세요! (후자의 경우 deque 사용 권장)
# 문제의 코드들
...
del people[len(people)-1-j]
del people[i]
...
del people[len(people)-1-j]
...
형님 지금 봤읍니다 다시 풀고 나서 보니 제가 수정한 부분과 형님의 조언이 일치하는 걸 알게 되었습니다. 한단계 성장했습니다. 감사합니다 형님