[백준 11279] 최대 힙
Tip
•
최대 힙 구현
◦
파이썬의 heapq 모듈 사용
▪
heappush : 힙에 데이터가 오름차순으로 정렬되게 저장
▪
heappop : 힙의 가장 왼쪽 원소를 빼서 출력
◦
heappop을 통해 가장 큰 원소를 출력하려면 데이터가 내림차순으로 정렬되어야 함
▪
heappuish를 통해 x를 저장할 때 -x값을 활용하여 내림차순으로 정렬되게 하자
•
(-x, x)
풀이 소스 코드
import sys, heapq
si = sys.stdin.readline
n = int(si())
max_heap = []
for _ in range(n):
x = int(si())
if x != 0:
heapq.heappush(max_heap, (-x, x)) # 가장 큰 값을 왼쪽에 저장할 수 있도록 (-x, x) 형태로 저장
else:
if len(max_heap) == 0: # 힙이 비어있으면
print(0)
else:
print(heapq.heappop(max_heap)[1]) # 가장 큰(왼쪽) 값 출력
Python