pop(0) 연산이 이유는 잘 모르겠으나 시간이 많이 걸립니다.
연산별 속도 비교를 해드릴게요.(각 연산별 1~100,000으로 채워진 리스트를 빌 때까지, 1개씩 제거)
1. pop() : 0.008043050765991211초
2. pop(0) : 1.1850876808166504초
3. deque의 popleft() : 0.006011009216308594초
(deque를 모르실까봐 알려드리면, 큐(queue)를 구현할 때, 주로 사용하는 모듈로 좌측부터 제거하거나, 추가하는 명령어가 있고, 이를 빠르게 실시해줍니다,)
보시면 한눈에 봐도 pop(0) 연산이 느린 것을 확인하실 수 있습니다.
코드 작성하시것을 보시면 일단 pop(0)연산을 하고 res나 다시 queue에 append합니다.
그럼 pop(0)연산이 n*(k-1)정도 수행될 것입니다. 따라서 pop(0)연산하는 부분을 수정해야할 거 같습니다.
매번 pop(0)을 하는 것보다, 뽑아내야 할 위치(target)를 찾은 다음에 pop(target)를 한번만 해주는 방식으로 해보세요.
yoon5526 2년 전
혹시 로직 자체를 바꿔야 하나요....?
로직을 바꾼다면 어떻게 바꿔야 할지 잘 모르겠습니다....ㅠㅠ