백준/Greedy
[heap/백준] 14235번 : 크리스마스 선물
ydin
2023. 7. 18. 12:32
- 문제 : https://www.acmicpc.net/problem/14235
문제 이해
- 문제 설명이 이해하기가 좀 어려웠다. 일단 이해한바로는 n개의 숫자 혹은 숫자 배열이 주어진다.
- 숫자가 0인 경우는 gifts 배열에서 가장 큰 값을 출력하면 되고, 만약 gifts에 숫자가 없다면 -1 을 출력한다.
- 숫자 배열 a가 주어진 경우라면 a[0]은 배열 a의 마지막 인덱스를 의미하고, a[1] ~ a[a[0]]의 값을 gifts 배열에 추가하면 된다.
- 숫자가 0일 때 gifts에서 가장 큰 값을 출력해야하므로 최대 heap으로 풀어야 하는 문제다. 최대 Heap이니 숫자들의 값에 -1을 곱해서 heappush를 하면 된다.
정답 풀이
import heapq
n = int(input())
gifts = []
for _ in range(n):
a = list(map(int, input().split()))
if a[0] == 0:
if len(gifts) == 0:
print(-1)
continue
else:
print(-1 * heapq.heappop(gifts))
if a[0] != 0 :
for i in range(1, len(a)):
heapq.heappush(gifts, -a[i])