[BOJ] 14501λ²: ν΄μ¬
https://www.acmicpc.net/problem/14501
14501λ²: ν΄μ¬
첫째 μ€μ λ°±μ€μ΄κ° μ»μ μ μλ μ΅λ μ΄μ΅μ μΆλ ₯νλ€.
www.acmicpc.net
λ¬Έμ
μλ΄μμΌλ‘ μΌνκ³ μλ λ°±μ€μ΄λ ν΄μ¬λ₯Ό νλ €κ³ νλ€.
μ€λλΆν° N+1μΌμ§Έ λλ λ ν΄μ¬λ₯Ό νκΈ° μν΄μ, λ¨μ NμΌ λμ μ΅λν λ§μ μλ΄μ νλ €κ³ νλ€.
λ°±μ€μ΄λ λΉμμκ² μ΅λν λ§μ μλ΄μ μ‘μΌλΌκ³ λΆνμ νκ³ , λΉμλ ν루μ νλμ© μλ‘ λ€λ₯Έ μ¬λμ μλ΄μ μ‘μλμλ€.
κ°κ°μ μλ΄μ μλ΄μ μλ£νλλ° κ±Έλ¦¬λ κΈ°κ° Tiμ μλ΄μ νμ λ λ°μ μ μλ κΈμ‘ Piλ‘ μ΄λ£¨μ΄μ Έ μλ€.
N = 7μΈ κ²½μ°μ λ€μκ³Ό κ°μ μλ΄ μΌμ νλ₯Ό 보μ.

1μΌμ μ‘νμλ μλ΄μ μ΄ 3μΌμ΄ 걸리며, μλ΄νμ λ λ°μ μ μλ κΈμ‘μ 10μ΄λ€. 5μΌμ μ‘νμλ μλ΄μ μ΄ 2μΌμ΄ 걸리며, λ°μ μ μλ κΈμ‘μ 15μ΄λ€.
μλ΄μ νλλ° νμν κΈ°κ°μ 1μΌλ³΄λ€ ν΄ μ μκΈ° λλ¬Έμ, λͺ¨λ μλ΄μ ν μλ μλ€. μλ₯Ό λ€μ΄μ 1μΌμ μλ΄μ νκ² λλ©΄, 2μΌ, 3μΌμ μλ μλ΄μ ν μ μκ² λλ€. 2μΌμ μλ μλ΄μ νκ² λλ©΄, 3, 4, 5, 6μΌμ μ‘νμλ μλ΄μ ν μ μλ€.
λν, N+1μΌμ§Έμλ νμ¬μ μκΈ° λλ¬Έμ, 6, 7μΌμ μλ μλ΄μ ν μ μλ€.
ν΄μ¬ μ μ ν μ μλ μλ΄μ μ΅λ μ΄μ΅μ 1μΌ, 4μΌ, 5μΌμ μλ μλ΄μ νλ κ²μ΄λ©°, μ΄λμ μ΄μ΅μ 10+20+15=45μ΄λ€.
μλ΄μ μ μ ν νμ λ, λ°±μ€μ΄κ° μ»μ μ μλ μ΅λ μμ΅μ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫째 μ€μ N (1 ≤ N ≤ 15)μ΄ μ£Όμ΄μ§λ€.
λμ§Έ μ€λΆν° Nκ°μ μ€μ Tiμ Piκ° κ³΅λ°±μΌλ‘ ꡬλΆλμ΄μ μ£Όμ΄μ§λ©°, 1μΌλΆν° NμΌκΉμ§ μμλλ‘ μ£Όμ΄μ§λ€. (1 ≤ Ti ≤ 5, 1 ≤ Pi ≤ 1,000)
μΆλ ₯
첫째 μ€μ λ°±μ€μ΄κ° μ»μ μ μλ μ΅λ μ΄μ΅μ μΆλ ₯νλ€.
λ¬Έμ ν΄κ²°
dpλ‘ νΈλ λ°©λ²μ κ±°μ μκ³ μμλλ° μ΄λ² λ¬Έμ λ₯Ό νλ©΄μ κ³΅λΆ μ’ μ λλ‘ ν΄μΌκ² λ€λ μκ°μ λ€μ ν λ²,,π₯²
μ΅μ μ ν΄λ₯Ό μ°ΎκΈ° μν΄μ NμΌλ§νΌ λ€ ν λ²μ© λΉκ΅λ₯Ό νλλ° μ΄ λ κ³μ κ³μ°νλ κ²μ΄ μλ, μ΄ μ κΉμ§μ μ΅μ ν΄λ₯Ό μ μ₯ν΄λκ³ κ·Έ ν΄μ λΉκ΅νλ λ°©λ²μΌλ‘ μ°μ°λμ μ€μΌ μ μλ€.
첫 forλ¬Έμ λ릴 λ iλ²μ§Έμ μλ΄ κΈ°κ°(i + TP[i][0])μ λν΄μ£Όκ³ μ΄μ΅μ dp[i] + TP[i][1]κ³Ό λΉκ΅νλ©΄μ dpλ₯Ό κ°±μ ν΄μ€λ€.
κ²°κ³Όλ κ³μ κ°±μ λλ―λ‘ λ¦¬μ€νΈμ μ μΌ λ§μ§λ§μ λ겨주면 λλ€.
N = int(input())
TP = [list(map(int, input().split())) for _ in range(N)]
dp = [0 for _ in range(N+1)]
for i in range(N):
for j in range(i+TP[i][0], N+1):
if dp[j] < dp[i] + TP[i][1]:
dp[j] = dp[i] + TP[i][1]
print(dp[-1])