아이디어:
어려워서 구글링함.
1. 일단 점수가 높은 순으로 정렬을 한다.
2. 과제 마감일에 가장 가깝게 배치한다. 그니까 최대한 늦게 과제를 제출한다.
- 마감일에 이미 원소가 배치되어 있다면 인덱스 하나씩 감소시키면서 배치, 배치할 곳이 없다면 넘어가기
생각해볼 점:
로직을 직접 생각해야 되는데 구글링 해버렸당..
과제 마감일에 가깝게 새로운 배열을 만들어서 원소를 넣는 방법이 있다는 걸 생각 못했음.
코드:
이차원 배열 정렬하는 방법 list.sort(key = lambda x: x[1])
import sys
n = int(sys.stdin.readline())
arr = []
for _ in range(n):
arr.append(list(map(int, sys.stdin.readline().split())))
arr.sort(key=lambda x:-x[1]) #점수 큰 순서대로 정렬
ans = [0]*1001
for i in range(n):
index = arr[i][0]
while (ans[index]!=0):
index-=1
if (index==0):
break
if (index==0):
continue
ans[index] = arr[i][1]
score = 0
for i in ans:
score+=i
print(score)
'알고리즘💻 > 그리디' 카테고리의 다른 글
BOJ 2828번: 사과 담기 게임 (0) | 2021.04.06 |
---|---|
BOJ 19639번: 배틀로얄 (0) | 2021.01.16 |
BOJ 12931번: 두 배 더하기 (0) | 2021.01.16 |
BOJ 11047번: 동전 0 (0) | 2021.01.15 |
BOJ 11399번: ATM (0) | 2021.01.15 |