[백준]11270 - 최대 힙
고려사항
-
첫 번째 시도에 시간초과 나서 input() 대신 sys.stdin.readline() 사용해줬더니 해결됨
-
이번엔 힙을 직접 구현하지 않고 heapq 모듈을 이용하여 풀어보려 했음. 그러나 heapq 모듈은 priority queue, 즉 최소 힙을 제공함. -> push와 pop 메서드에 넘기는 값을 건드려보자
- 1) push의 경우, -x로 값 삽입하여 원래 값의 크기 순서를 바꿈
- 2) pop의 경우, -를 붙여 원래 값으로 되돌려 출력되도록 함.
코드
#S2_11270_최대 힙
import sys
from heapq import heappush, heappop
def maxHeap(n,num):
h=[]
for x in num:
if x==0:
if h:
print(-heappop(h))
else:
print(0)
else:
heappush(h,-x)
input=sys.stdin.read
data=input().split()
n=int(data[0])
num=list(map(int,data[1:]))
maxHeap(n,num)
Leave a comment