💡 Python 3
14235 크리스마스 선물 [Link]
절댓값 힙 문제와 유사하게 문제를 풀었는데 어려울 수 있는 부분은 총 2가지 일 것 같다.
파이썬의 heapq
모듈은 최소 힙을 지원하고 해당 문제는 최대 힙이 필요한 문제 → 힙에 (음수 값, 원래 값)으로 넣어주는 것으로 해결
입력 값이 0
과 같이 하나의 정수로 들어올 수 도 있고, 2, 3, 2
와 같은 그 이상의 정수가 들어올수도 있는 불규칙한 입력 값 문제 → len()
을 이용해서 판별
위 내용을 적용한 코드는 아래와 같다.
import heapq
n = int(input())
heap = []
temp = []
for _ in range(n):
cur = input()
if len(cur) == 1:
if heap: print(heapq.heappop(heap)[1])
else: print(-1)
else:
temp = list(map(int, cur.split()))
for i in range(1, len(temp)):
heapq.heappush(heap, (-temp[i], temp[i]))