과제 [백준 13904]
https://www.acmicpc.net/problem/13904
이 문제는 처음에 주어진 입력을 어떻게 정렬해야하나 고민을 많이 하게 되는 문제였다.
첫번째 풀이 방법은 점수의 크기만 생각했지, 저 방법으로는 같은 날짜가 계속나오는데 점수 크기만 크다면 계속해서 더해줄 수 있는 반례가 있었다. 날짜에 대해 오름차순을 하고 점수에 대해서는 내림차순을 한 내 실수 였다.
import heapq
n = int(input())
assign = [list(map(int, input().split())) for _ in range(n)]
assign.sort(key=lambda x : -x[1])
result = 0
possible = [0] * 1001
for d, w in assign:
flag = True
for i in range(d, 0, -1):
if possible[i] == 0:
possible[i] = 1
flag = False
break
if flag:
continue
result += w
print(result)