λ°±μ€ 2579 νμ΄μ¬
https://www.acmicpc.net/problem/2579
μ΄λ² λ¬Έμ λ 쑰건μ λ§μΆ°μ κ³λ¨μ μ€λ₯΄λ©΄μ μ΅λκ°μ ꡬνλ λ¬Έμ μ λλ€.
- κ³λ¨μ νλ²μ 1~2 κ³λ¨μ© μ€λ₯Ό μ μλ€.
- μμμ μ ν¬ν¨νμ§ μκ³ ... μ°μλ 3κ°μ κ³λ¨μ λ°μ μ μλ€. μ¦, μ΅λ 2κ° κ³λ¨κΉμ§ μ°μμΌλ‘ λ°μ μ μλ€.
- λ§μ§λ§ κ³λ¨μλ λ°λ―μ΄ λμ°©ν΄μΌνλ€.
λμ κ³νλ²μ μ¬μ©νλ©΄ νμ¬ μμΉμ μ΅λκ°μ μ μ₯νλ©΄μ κ°κΈ° λλ¬Έμ... 3λ² μ§Έ 쑰건μ ν¬κ² κ±±μ ν κ² μκ³ ... λ¬Έμ λ 3κ°μ μ°μλ κ³λ¨μ λ°μ μ μλ€λ 쑰건μ ꡬλΆνκΈ° μν λ°©λ²μ λλ€.
3λ² μ°μ λ°μΌλ©΄ μλκΈ° λλ¬Έμ 2λ² μ°μκΉμ§λ λ°μ μ μλ€. κ·Έλ¬λ©΄... νμ¬ μμΉμ μλ κ³λ¨μ 2κ°μ§ μ‘°κ±΄μ΄ μκΈ΄λ€.
- μ΄μ μ 2κ³λ¨ μ°μμΌλ‘ μ€λ₯΄κ³ νμ¬ κ³λ¨μ΄ 2κ³λ¨μ μ€λ₯Έ κ³³
- 3κ³λ¨ μ΄μ μμ 2κ³λ¨μ μ€λ₯΄κ³ λ°λ‘ μ΄μ κ³λ¨μμ λΆν° νμ¬ κ³λ¨κΉμ§ μ°μμΌλ‘ μ€λ₯Έλ€.
2κ°μ§ 쑰건 μ€ μ΅λκ°μ΄ ν΄λΉ μμΉμ μ΅λκ°μ΄λ€.
Python νμ΄
import sys
read = sys.stdin.readline
n = int(read())
stairs = [0] + [int(read()) for _ in range(n)] + [0]
cache = [0] * (n+2)
cache[1] = stairs[1]
cache[2] = cache[1] + stairs[2]
for i in range(3, n+1):
cache[i] = max(cache[i-2], cache[i-3] + stairs[i-1]) + stairs[i]
print(cache[n])
- κ° κ³λ¨ λ³ μμΉμ λμ λ νμ¬ μμΉμ μ΅λκ° λͺ¨λ 리μ€νΈλ‘ μ¬μ©λλ€.
λμ λλ λ©λͺ¨μ΄μ μ΄μ μΊμκ° κΈ°μ€μ λ°λ‘ μ΄μ μμΉλ‘ μκ°νλ©΄ λ§μ΄ ν·κ°λ¦΄ μ μλ€. μ΄λ² λ¬Έμ λ 2,3 κ³λ¨ μ μ΄ κΈ°μ€μ΄λλ€.
λκΈ