본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 2109 순회강연

by Alan_Kim 2023. 5. 8.
728x90
반응형

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

 

2109번: 순회강연

한 저명한 학자에게 n(0 ≤ n ≤ 10,000)개의 대학에서 강연 요청을 해 왔다. 각 대학에서는 d(1 ≤ d ≤ 10,000)일 안에 와서 강연을 해 주면 p(1 ≤ p ≤ 10,000)만큼의 강연료를 지불하겠다고 알려왔다.

www.acmicpc.net

문제 해결

  • 전형적인 그리디 문제
  • 제안을 큰 p 순서, 작은 d 순서로 정렬을 시킨 다음 큰 p부터 최대한 늦게 스케줄이 비어 있는 날에 제안을 수락하려고 한다.
  • 그러면 촉박한 d를 가진 것도 많이 할 수 있기 때문에 큰 값을 주는 순서대로 마감일자부터 가까운 날까지 확인하면서 계획이 없는 날에 강연을 하기로 하고 코드를 짜면 끝!

 

CODE

n = int(input())
dp = [0]*(10001)
memo = []
for _ in range(n):
    p, d = map(int, input().split())
    memo.append((p,d))
memo.sort(key= lambda x: (-x[0], x[1]))
for i in range(n):
    np, nd = memo[i][0], memo[i][1]
    for j in range(nd,0,-1):
        if dp[j] ==0:
            dp[j] = np
            break
print(sum(dp))
728x90
반응형

'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글

[python] 백준 1670 정상 회담2  (0) 2023.05.09
[python] 백준 1328 고층 빌딩  (0) 2023.05.08
[python] 백준 1949 우수 마을  (0) 2023.05.07
[python] 백준 2157 여행  (0) 2023.05.07
[python] 백준 1132 합  (0) 2023.05.07

댓글