알고리즘
[백준][Python 파이썬] 1927번 최소 힙
룰루루
2023. 11. 30. 17:10
문제의 원래 의도는 최소 힙(min heap)을 구현하는 것이나, 문제를 푼 방법을 설명하는 코테 등이 아니라면 파이썬에 구현되어 있는 heapq 라이브러리를 쓰면 쉽게 풀 수 있다.
heap으로 사용하기 위해서 heap이라는 리스트 변수를 선언했다.
heap에 원소를 넣기 위해서는 heapq.heappush(heap변수, 추가할 원소) 를 사용한다.
반대로 heap에서 가장 작은 원소를 빼기 위해서는 heapq.heappop(heap변수)를 사용한다.
heapq 라이브러리는 최소 힙으로 구현되어 있지만, 최대 힙으로도 사용할 수 있다.
앞서 heappush 연산을 할 때 추가할 원소의 값을 음수로 넣어주면 양수로는 가장 큰 원소가 가장 작은 원소로 간주되어 맨 마지막에 나오게 된다.
import heapq
import sys
input = sys.stdin.readline
N = int(input())
heap = []
for _ in range(N):
command = int(input())
if command == 0:
if heap:
elem = heapq.heappop(heap)
print(elem)
else:
print(0)
else:
heapq.heappush(heap, command)