[백준] 11279 최대 힙

cheeeese·2022년 4월 27일
0

코딩테스트 연습

목록 보기
92/151
post-thumbnail

📖 문제

https://www.acmicpc.net/problem/11279

💻 내 코드

import sys
import heapq
n=int(input())
nums=[]

for i in range(n):
    x=int(sys.stdin.readline())
    if x==0:
        if len(nums)==0:
            print(0)
        else:
            print(heapq.heappop(nums)[1])
    else:
        heapq.heappush(nums, (-x,x))

💡 풀이

  • heqpq사용
  • heapq는 최소 힙만을 지원해주기 때문에 음수로 만들어 최대 값이 루트로 올 수 있게 해주어야 한다
heapq.heappush(nums, (-x,x))
  • 힙에 튜플 형태로 음수와 양수를 함께 저장
print(heapq.heappop(nums)[1])
  • heappop을 하면 루트 값이 pop됨
  • 이때 양수를 출력해야 하므로 양수가 저장된 위치인 [1]로 출력

0개의 댓글