1753번 - 최단경로
heappush와 heappop에 데이터를 넣는 순서에 따라 시간 초과가 발생합니다.
17, 21, 28 번 라인에 노드와 거리(비용) push, pop 순서를 다음과 같이 바꿔주면 시간초과가 발생합니다.
17 - heapq.heappush(q,(S,0))
21 - now, co = heapq.heappop(q)
28 - heapq.heappush(q,(i[0], cost))
반대로 다시 바꿔주면 정답처리가 되는데 이유가 궁금합니다.
안녕하세요, Python 의 heapq 는 첫번째 요소를 기준으로 정렬합니다.
cost 를 기준으로 heapq를 구성해야하기 때문에, cost 가 맨 앞에 와야 맞습니다!
(그렇지 않은 경우, heap 이 제대로 구성되지 않아 우선순위를 이용해 빠르게 끝나지 못하고 모든 경우를 다 돌기 때문에 시간 안에 들어올 수가 없습니다)
댓글을 작성하려면 로그인해야 합니다.
woghdclf 2년 전
heappush와 heappop에 데이터를 넣는 순서에 따라 시간 초과가 발생합니다.
17, 21, 28 번 라인에 노드와 거리(비용) push, pop 순서를 다음과 같이 바꿔주면 시간초과가 발생합니다.
17 - heapq.heappush(q,(S,0))
21 - now, co = heapq.heappop(q)
28 - heapq.heappush(q,(i[0], cost))
반대로 다시 바꿔주면 정답처리가 되는데 이유가 궁금합니다.