아이디어:
우선순위 큐를 구현하는 기본적인 문제이다.
파이썬으로 우선순위 큐를 구현하기 위해서는 heapq 모듈로 구현하는 방법과 queue모듈의 queue.PriorityQueue()를 이용하는 방법 두 가지가 있는데, 일단 heapq모듈을 이용하여 구현해보았다.
절댓값이 경우에는 작은 수부터 출력되도록 하는 조건이었는데, 기본적으로 작은 수부터 출력되도록 설정이 되어있어서 따로 조건을 추가할 필요가 없었다. 근데 만약 반대의 경우라면 어떻게 해야 하는지 모르겠다.. 검색해보니 내가 따로 구현을 해야 할 것 같은데.. 역시 c++이 이런 경우에 훨씬 편하긴 할 것 같다.
import sys, heapq
N = int(sys.stdin.readline())
h = []
for _ in range(N):
x = int(sys.stdin.readline())
if (x!=0):
heapq.heappush(h, (abs(x),x))
else:
if (len(h)==0): print(0)
else: print(heapq.heappop(h)[1])
'알고리즘💻 > 우선순위큐&다익스트라' 카테고리의 다른 글
BOJ 11279번: 최대 힙 (0) | 2021.02.15 |
---|---|
BOJ 20046번: Road Reconstruction (0) | 2021.02.13 |
BOJ 1916번: 최소비용 구하기 (0) | 2021.02.13 |
BOJ 1753번: 최단경로 (0) | 2021.02.13 |
BOJ 11000번: 강의실 배정 (0) | 2021.02.13 |