1. queue보다 deque가 빠른건 맞습니다.
2. 함수가 반복문 안에 있으면 시간을 많이 잡아먹는다는 말이 무슨 말인지는 잘 모르겠지만,
da = deq.append로 사용하신다고 시간이 단축되지는 않습니다.
3. pop(0) 즉 맨 앞 인덱스를 pop 할 때 뒤의 자료들이 shift되기에 O(N)의 시간이 소요됩니다.
del도 다르지는 않고요. deque를 쓰는 이유는 popleft() 연산으로 O(1)에 맨 앞 원소를 제거할 수 있기 때문입니다.
4. 빠른입/출력 사용 방법을 익히시고 파이썬은 느리기에 시간초과가 발생하면 pypy3로 제출해 보시는 것도 좋은 방법입니다.
choah76 3년 전
맨 처음, 리스트를 이용해 queue를 구현했을떄, 시간 초과가 떴습니다. 그래서 인터넷검색을 통해 시간단축하는 여러 정보들을 알게 되었고, 그를 적용시켰습니다.
우선, queue 모듈보다 collections.dequq 모듈이 더 빠르다 하여 교체하였고,
.함수 가 반복문안에 있으면 시간을 많이 잡아먹는다 하여 미리 정의했습니다. (제 코드에서는 da = deq.append 가 되겠네요)
pop 함수 또한 시간이 오래 걸린다하여 del함수로 교체하였습니다.
이런 방법들을 적용하여도 시간초과오류가 여전히 떠서 질문드립니다.
우선, 위에 제가 사용한 방법들은 유의미했나요?
두번째로 deque 모듈을 그대로 사용하면서 시간초과를 해결할 수 있는 방법엔 어떤 것이 있을까요? 없다면, dequq모듈을 이용하지 않는 방법을 가르쳐주시기바랍니다.
세번째로, 비단 이 문제 뿐만아니라 파이썬으로 코딩할때 걸리는 시간을 줄일 수 있는 팁을 가르쳐주신다면 더욱 !! 감사하겠습니다.