문제
https://www.acmicpc.net/problem/1781
풀이
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))
데드라인 기준으로 오름차순을 해준다.
우선순위 큐에 컵라면 개수를 넣어준다.
만약 큐의 길이가 날짜보다 크면 데드라인을 넘은거기때문에 가장 작은 컵라면 개수를 빼준다.
'코딩테스트 > Python' 카테고리의 다른 글
[Python] 백준 #11723 - 집합 (0) | 2022.07.14 |
---|---|
[Python] 백준 #13458 - 시험 감독 (0) | 2022.05.27 |
[Python] 백준 #9935 - 문자열 폭발 (0) | 2022.05.23 |
[Python] 백준 #2109 - 순회강연 (0) | 2022.05.23 |
[Python] 백준 #4659 - 비밀번호 발음하기 (0) | 2022.05.23 |