π€λ¬Έμ ν΄κ²°
-
S4 | μμ νμ or DP
λμ΄λκ° S4μΈ λ§νΌ μμ νμμΌλ‘ ν΄κ²°ν΄λ λλ€.
νμ§λ§ μ λ²μ νλ² νμ΄λ΄€μΌλ―λ‘ μ΄λ²μλ DPλ‘ ν΄κ²°ν΄λ΄€λ€.
μΌνλ λ μ 맨 λ€μμλΆν° κ³μ°ν΄λ³΄μ
7μΌμ μ ννλ©΄ 근무μκ° μ΄κ³Όλ‘ μ΄μ΅ 0
6μΌλ λ§μ°¬κ°μ§
5μΌμ μ ννλ©΄ μ΄μ΅ 15
4μΌμ μ ννλ©΄ μ΄μ΅μ 20μ, 5μΌμλ μΌν μ μμΌλ―λ‘ +15 ν΄μ 35
3μΌμ μ ννλ©΄ μ΄μ΅μ 10μ 4μΌμλ μΌν μ μμΌλ―λ‘ (4μΌμ μΌνλ©΄ μμμ νμΈνλ―μ΄ 5μΌλ μΌνλ€) +35 μ΄λ―λ‘ 45
2μΌμ μ ννλ©΄ μ΄μ΅μ 20
1μΌμ μ ννλ©΄ μ΄μ΅μ 10μ 4μΌλΆν° μΌν μ μμΌλ―λ‘ ( μκΉ κ·Έ 35 λ₯Ό λνλ€) +35 μ΄λ―λ‘ 45
κ²°κ³Όμ μΌλ‘ 1,4,5 μΌνλ©΄ 45
λλ 3,4,5 μΌνλ©΄ 45
μ΄ λκ°μ§μ κ²½μ°κ° μ΅λμ΄λ€.
νκ°μ§ μΆκ°ν΄μΌν κ²½μ°λ 근무μκ°μ΄ μ΄κ³Όν΄μ μΌν μ μλλΌλ 0λμ νμ¬λμ¨ μ΅λμ΄μ΅κ°μ μ±μλ£μ΄μ€μΌνλ€.
π»μμ€ μ½λ
import sys
input = sys.stdin.readline
if __name__ == '__main__':
N = int(input())
schedule = [tuple(map(int, input().split())) for _ in range(N)]
profit = [0] * (N + 1)
max_profit = 0
for i in range(N - 1, -1, -1):
day, money = schedule[i]
if i + day > N:
profit[i] = max_profit
continue
else:
max_profit = max(money + profit[i + day], max_profit)
profit[i] = max_profit
print(max_profit)
πλ¬Έμ νμΈ
μΆμ²: BACKJOON ONLINE JUDGE
'Algorithm Problem > Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[python] λ°±μ€ - 14889. μ€ννΈμ λ§ν¬ (0) | 2020.11.14 |
---|---|
[python] SWEA - 10726. μ΄μ§μ νν (2) | 2020.11.13 |
[python] λ°±μ€ - 14235. ν¬λ¦¬μ€λ§μ€ μ λ¬Ό (0) | 2020.11.10 |
[python] λ°±μ€ - 2014. μμμ κ³± (0) | 2020.11.09 |
[python] SWEA - 10761. μ λ’° (0) | 2020.11.08 |