[BOJ] 11279 최대 힙

[BOJ] 11279 최대 힙

문제 링크

이 문제는 최상위 노드를 유지해주는 heqp을 이용해서 풀이한다. 최대힙은 최대값이 최상위 노드에, 최소힙은 최소값이 최상위 노드에 위치하는데

python에서 제공하는 heapq는 최소힙이 구현되어있다. 이를 최대힙으로 이용하는 방법은

heapq에 값을 넣어주는 heappush 에는 -를 삽입하여 반전된 값을 넣어주고 값을 꺼내올 때는 heappop일 이용학고 반환된 값에 -를 붙여서 원상복구 시켜주면 된다.

나의 풀이

import sys
import heapq

N = int(sys.stdin.readline())

q = []
result = []

for i in range(N):
  x = int(sys.stdin.readline())
  if(x==0):
    if(len(q)==0):
      result.append(0)
    else:
      result.append(-(heapq.heappop(q)))
  else:
    heapq.heappush(q, -x)

for  i in result:
  print(i)

© 2021. All rights reserved.