Algorithm/백준
항해99 리부트코스 알고리즘 2주 2일차 백준 14235 크리스마스 선물
Albosa2lol
2024. 7. 25. 17:03
https://www.acmicpc.net/problem/14235
풀이
import heapq
import sys
input = sys.stdin.readline
def main():
n = int(input().strip()) # 명령의 개수 N을 입력받음
max_heap = [] # 빈 리스트를 최대 힙으로 사용
for _ in range(n):
command = list(map(int, input().strip().split()))
if command[0] == 0: # 선물을 받아야 하는 경우
if max_heap:
# 힙이 비어있지 않으면 가장 큰 선물 출력 후 제거
print(-heapq.heappop(max_heap))
else:
# 힙이 비어있으면 -1 출력
print(-1)
else:
# 산타가 선물을 추가하는 경우
for gift in command[1:]:
heapq.heappush(max_heap, -gift) # 최대 힙을 유지하기 위해 음수로 변환하여 추가
if __name__ == "__main__":
main()
- 최대 힙을 사용하여 선물의 크기를 관리
- 산타가 선물을 추가할 때마다 최대 힙에 선물을 추가
- 아이들이 선물을 받을 때마다 최대 힙에서 가장 큰 선물을 제거하고 출력