상상쓰

[백준] 과제 본문

Coding Test

[백준] 과제

상상쓰 2021. 7. 2. 17:52

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

 

13904번: 과제

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

www.acmicpc.net

 

아래와 같이 점수를 내림차순으로 날짜가 중복된다면 중복이 생기지 않을 때까지 d 를 1 씩 감소한다. d 가 0 이라는 것은 과제를 포기해야 하는 상황이다.

 

import sys
from collections import defaultdict

N = int(sys.stdin.readline())
answer = 0
dic = defaultdict(int)
subject = []

for i in range(N):
    subject.append(list(map(int, sys.stdin.readline().split())))
    
subject.sort(key=lambda x : -x[1])

for d, w in subject:
    while d > 0:
        if dic[d] == 0:
            answer += w
            dic[d] = 1
            break
        
        d -= 1
    
print(answer)

'Coding Test' 카테고리의 다른 글

[백준] 포도주 시식  (0) 2021.07.05
[백준] 한조서열정리하고옴ㅋㅋ  (0) 2021.07.05
[프로그래머스] [3차] 자동완성  (0) 2021.07.02
[프로그래머스] 징검다리  (0) 2021.07.02
[프로그래머스] 기능개발  (0) 2021.07.01
Comments