Koala - 15기/코딩테스트 준비 스터디
[백준/Python] #14325 크리스마스 선물
영찬_
2024. 7. 31. 14:35
- 문제
https://www.acmicpc.net/problem/14235
- 알고리즘
입력으로 0이 들어온 곳에서는 현재 가지고 있는 선물중에 가치가 가장 높은 선물을 주고, 줄 선물이 없다면 -1을 출력하면 되는 문제이다.
이때, 현재 가지고 있는 선물중에 가치가 높은 선물을 선별하기 위해 우선순위 큐를 사용하였다.
파이썬에 내장되어있는 module을 가져왔고, 이 모듈에서 get을 할때 가장 낮은 숫자부터 get을 해주기 때문에, 선물의 가치에 -1을 곱하여 음수로 표현한 뒤 넣어주었다. 이렇게 하면 절댓값이 가장 높은 수부터 get이 되고, 나중에 출력할때 -1을 곱해서 출력하도록 구성하였다.
이 문제에서 입력에 0 or a+1만큼의 숫자들로 입력이 진행되기 때문에, 리스트로 받아서 리스트의 첫번째 원소를 통해 case를 나누어 진행했다.
- Code
import sys
input = sys.stdin.readline
from queue import PriorityQueue
n = int(input())
que = PriorityQueue()
for _ in range(n):
line = list(map(int,input().split()))
if line[0] == 0:
if que.empty() == False:
print(que.get()*-1)
else:
print(-1)
else:
for i in range(1,line[0]+1):
que.put(line[i]*-1)