본문 바로가기

코딩테스트/Python

[Python] 백준 #1781 - 컵라면

문제


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

 

1781번: 컵라면

상욱 조교는 동호에게 N개의 문제를 주고서, 각각의 문제를 풀었을 때 컵라면을 몇 개 줄 것인지 제시 하였다. 하지만 동호의 찌를듯한 자신감에 소심한 상욱 조교는 각각의 문제에 대해 데드라

www.acmicpc.net

 

 

 

풀이


import heapq
import sys

n = int(input())
arr = []
for _ in range(n):
    tmp = list(map(int,sys.stdin.readline().strip().split()))
    arr.append(tmp)

arr = sorted(arr,key=lambda x:x[0]) # 데드라인 기준으로 오름차순

queue = []

for day,count in arr: 
    heapq.heappush(queue,count) # 컵라면 개수를 넣어준다
    if day < len(queue): # 만약 큐의 길이가 날짜보다 크면
        heapq.heappop(queue) # 가장 작은 컵라면 개수를 빼준다

print(sum(queue))

 

데드라인 기준으로 오름차순을 해준다.

 

우선순위 큐에 컵라면 개수를 넣어준다.

만약 큐의 길이가 날짜보다 크면 데드라인을 넘은거기때문에 가장 작은 컵라면 개수를 빼준다.