BOJ/백준-13904-python

cosmos·2021년 7월 5일
0
post-thumbnail
post-custom-banner

문제📖

풀이🙏

  • 웅찬이는 가장 점수를 많이 받을 수 있도록 과제를 수행하고 싶다.
  • 첫 줄에 정수 N이 주어진다.
  • 다음 줄부터 N개의 줄에는 각각 두 정수 d, w가 주어진다.
  • d는 과제 마감일까지 남은 일수를 의미하며, w는 과제의 점수를 의미한다.
  • 얻을 수 있는 점수의 최댓값을 출력한다.

코드💻

# boj, 13904 : 과제, python3
# 그리디 알고리즘
import sys

def homework(n, l):
    answer = [0 for _ in range(1000)]
    
    for i in range(n):
        for j in range(l[i][0]-1, -1, -1):
            if answer[j] == 0:
                answer[j] = l[i][1]
                break
    
    return sum(answer)

N = int(sys.stdin.readline())
l = []

for _ in range(N):
    d, w = map(int, sys.stdin.readline().split())
    l.append([d, w])
    
print(homework(N, sorted(l, reverse=True, key=lambda x : x[1])))

결과😎

출처 && 깃허브📝

boj
github

post-custom-banner

0개의 댓글