dongdhy   3년 전

제가 알기로 PriorityQueue와 heapq 모두 동일한 기능을 수행하는 것으로 알고 있었는데 PriorityQueue로 작성한 코드는 런타임에러가 발생하는 반면 heapq로 작성한 코드는 정답처리가 되었네요.(문제 번호는 5719번입니다) 구글에서 검색해보니까 둘의 차이점은 PriorityQueue가 heappushpop()이나 heapreplace()같이 사용빈도가 낮은 heapq의 메소드들을 가지고있지 않다는 거랑 PriorityQueue는 thread-safe인 반면 heapq는 그렇지 않다는 것인데요. 여전히 왜 하나만 오류가 발생했는지 모르겠네요. thread-safe여부가 시간과 연관이 있다는 것 같긴한데 그러면 런타임에러가 아니라 시간초과가 걸리지않나요..? 저 말고 대부분의 코드 작성자분들은 PriorityQueue보다 heapq를 더 선호하시던데 혹시 둘의 차이점을 잘 아시는 분 있으시면 도움 부탁드립니다ㅜㅜ

dlgydms96   3년 전

런타임에러의 원인은 모르겠으나 heapq와PriorityQueue의 기능적 차이가 한가지 더 있습니다.

heapq는 느슨한 정렬인 반면, PriorityQueue는 완벽한 정렬을 제공해줍니다.

이런 부분에서 에러가 난 걸 수도 있겠네요.

댓글을 작성하려면 로그인해야 합니다.