less than 1 minute read

고려사항

  1. 첫 번째 시도에 시간초과 나서 input() 대신 sys.stdin.readline() 사용해줬더니 해결됨

  2. 이번엔 힙을 직접 구현하지 않고 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