๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/DP

[๋ฐฑ์ค€]14501๋ฒˆ: ํ‡ด์‚ฌ

by syLim___ 2023. 3. 23.
728x90

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

 

14501๋ฒˆ: ํ‡ด์‚ฌ

์ฒซ์งธ ์ค„์— ๋ฐฑ์ค€์ด๊ฐ€ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ด์ต์„ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net


dp ๋ฌธ์ œ!

 

ํฌ๊ธฐ๊ฐ€ n์ธ dp ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ณ  0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

x์ผ์ฐจ์— ์ƒ๋‹ด์„ ํ–ˆ์„ ๊ฒฝ์šฐ ๊ทธ ๊ธฐ๊ฐ„๋™์•ˆ์˜ ๋ˆ„์ ์ˆ˜์ต์ด ์ปค์งˆ ๊ฒฝ์šฐ์—๋งŒ dpํ…Œ์ด๋ธ” ๊ฐ’์„ ์ฆ๊ฐ€์‹œ์ผœ์ค€๋‹ค.

 

import sys 
input = sys.stdin.readline

n = int(input())
time = [0]*n
price = [0]*n

for i in range(n):
  t, p = map(int,input().split())
  time[i] = t
  price[i] = p

dp = [0]*(n+1)
for i in range(n):
  j = i + time[i]
  while j <= n:
    dp[j] = max(dp[j], price[i]+dp[i])
    j += 1

print(dp[n])
728x90