본문 바로가기
Problem Solving/BOJ

[Greedy] python 13904 과제

by Bokoo14 2023. 1. 22.

https://www.acmicpc.net/problem/13904

 

13904번: 과제

예제에서 다섯 번째, 네 번째, 두 번째, 첫 번째, 일곱 번째 과제 순으로 수행하고, 세 번째, 여섯 번째 과제를 포기하면 185점을 얻을 수 있다.

www.acmicpc.net

# 2023.01.22
import sys
input = sys.stdin.readline

n = int(input()) # 과제의 수
homework = [list(map(int, input().split())) for _ in range(n)] # 남은 일수, 점수
homework.sort(key = lambda x: (-x[1], x[0]))
# 과제 점수가 가장 높은 순, 날짜 조금 남은 순으로 정렬
# [[4, 60], [2, 50], [4, 40], [3, 30], [1, 20], [4, 10], [6, 5]]

solved=[False]*(1001) # 1000개의 문제 -> index는 날짜를 나타냄
def greedy(homework):
    answer=0 # 총 과제의 점수
    for i in range(n): # 모든 과제를 검사해줌
        index=homework[i][0] # 과제남은 날짜
        while index>0: # 과제를 수행할 수 있는지 없는지 검사
            if solved[index]==False:
                solved[index]=True
                answer+=homework[i][1]
                break
            index-=1
    return answer

print(greedy(homework))