->힙은 최대값을 구하기 위한 구조와 최소값을 구하기 위한 구조로 분류
최대 힙(max heap): 부모 노드의 값은 자식 노드값보다 크거나 같다.
최소 힙(min heap): 보모 노드의 값은 자식 노드값과 같거나 작다.
최대 힙: 자식 노드값 ≦ 부모 노드값
최소 힙: 자식 노드값 ≧ 부모 노드값
최대 또는 최소값을 검색하기 위해서 사용한다.
-> 보는 것처럼 부모 노드 값이 가장 크다. 밑으로 내려가면서 작아짐.
✍️ 내풀이
import sys
import heapq
a = int(sys.stdin.readline())
heap = []
for i in range(a):
num = int(sys.stdin.readline())
if num != 0:
heapq.heappush(heap, (-num))
else:
try:
print(-1 * heapq.heappop(heap))
except:
print(0)
- 참고:
heapq.heappush(heap, item)
힙 불변성을 유지하면서, item 값을 heap으로 푸시합니다.
heapq.heappop(heap)
힙 불변성을 유지하면서, heap에서 가장 작은 항목을 팝하고 반환합니다. 힙이 비어 있으면, IndexError가 발생합니다. 팝 하지 않고 가장 작은 항목에 액세스하려면, heap[0]을 사용하십시오.