문제의 원래 의도는 최소 힙(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)
'알고리즘' 카테고리의 다른 글
[백준][Python 파이썬] 11724번 연결 요소의 개수 (0) | 2023.12.02 |
---|---|
[백준][Python 파이썬] 7576번 토마토 (2) | 2023.12.01 |
[백준][Python 파이썬] 1966번 프린터 큐 (2) | 2023.11.28 |
[백준][Python 파이썬] 1874번 스택 수열 (0) | 2023.11.28 |
[백준][Python 파이썬] 1764번 듣보잡 (2) | 2023.11.24 |