[ BOJ / Python ] 13904번 과제

황승환·2022년 5월 31일
0

Python

목록 보기
320/498


이번 문제는 우선순위큐를 이용하여 해결하였다. 과제들을 오름차순으로 정렬시키고, 날짜 마지막 날부터 감소시키는 순으로 순회하며 과제들을 할 수 있는 날이라면 available에 넣어주고, available을 pop하여 결과값에 더해주도록 하였다. 이때 available에는 현재 날짜에서 가능한 과제가 들어가는데, 많은 점수를 얻어야 하기 때문에 available를 과제의 점수를 음수로 넣은 heapq로 선언하여 최대힙으로 이용하였다.

Code

import heapq
n=int(input())
tasks=[list(map(int, input().split())) for _ in range(n)]
tasks.sort()
available=[]
cur=tasks[-1][0]
answer=0
while cur>0:
    while tasks and tasks[-1][0]>=cur:
        heapq.heappush(available, -tasks.pop()[1])
    cur-=1
    if not available:
        continue
    answer-=heapq.heappop(available)
print(answer)

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글