1. 컵라면수가 많은순으로 정렬한다.
2. find 함수로 날짜에 맞춰 채워나간다.
3. 날짜에 채웠으면 그 날짜에는 채우지 못하므로 배열의 값을 한개 내려준다.
4. find 함수로 계속해서 채울수있는 날짜를 채워나간다.
n = int(input())
ans = 0
pay = []
deadline = [i for i in range(200001)]
def find(x):
if x == 0:
return 0
if x == deadline[x]:
deadline[x] -= 1
return x
else:
deadline[x] = find(deadline[x])
return deadline[x]
for _ in range(n):
pay.append(list(map(int, input().split())))
pay.sort(key=lambda x: -x[1])
for x, y in pay:
if find(x) > 0:
ans += y
print(ans)
'알고리즘 > BOJ' 카테고리의 다른 글
[Python] 백준 2638: 치즈 (0) | 2021.09.16 |
---|---|
[Python] 백준 16288: Passport Control (0) | 2021.09.15 |
[Python] 백준 13164: 행복 유치원 (0) | 2021.09.14 |
[Python] 백준 1826: 연료채우기 (0) | 2021.09.14 |
[Python] 백준 2613: 숫자구슬 (0) | 2021.09.14 |
댓글