λ°±μ€ 2156 νμ΄μ¬
https://www.acmicpc.net/problem/2156
ν΄λΉ λ¬Έμ λ μ£Όμ΄μ§ 쑰건μ μν΄ κ°μ₯ λ§μ μμ ν¬λμ£Όλ₯Ό μμνλ λ°©λ²μ ꡬνλ λ¬Έμ μ λλ€.
- ν¬λμ£Όμ μμ μ ννλ©΄ λͺ¨λ λ§μ μΌνλ€.
- μ°μμΌλ‘ λμ¬ μλ 3μμ λͺ¨λ λ§μ€ μ μλ€.
[CS/μκ³ λ¦¬μ¦] - λ°±μ€ 2579 νμ΄μ¬ - κ³λ¨ μ€λ₯΄κΈ° - λμ κ³νλ² λ¬Έμ μ μ μ¬ν λ¬Έμ μΈλ° μ°¨μ΄κ° μλ€λ©΄ κ°μ₯ λ§μ§λ§ μμ κΌ λ§μμ§ μμλ λλ€λ κ²μ λλ€. μ¦, μ΅λκ°μ ꡬν λ μ‘°κ±΄μ΄ νλ λ λΆμ κ±°λΌλ μμ μ λλ€.
μ°μμΌλ‘ 3μμ λ§μμ§ λͺ»νκΈ° λλ¬Έμ μ΅λλ‘ μ°μ 2κ°μ μμΈμ λ§μ€ μ μμ΅λλ€. κ·Έλ¦¬κ³ λ§μ§λ§ μμΈμ κΌ λ§μ€ νμλ μμ΅λλ€. μ΄λ° ν 쑰건μΌλ‘ μλμ κ°μ κ·μΉμ΄ μκΉλλ€.
- νμ¬ μμΉμ μμΈμ λ§μκ³ λ°λ‘ μ μμΈμ λ§μ ¨λ€λ κ²μ -3 μμΉμ μ΅λκ°μμ νλ 건λ λ΄ κ²½μ°λ€.
- νμ¬ μμΉμ μμΈμ λ§μκ³ μ΄μ μμΈμ΄ 건λ λ΄ μμΈμ΄λΌλ©΄ -2 μμΉμ μ΅λκ°μ λν κ²½μ°λ€.
- νμ¬ μμΉμ μμΈμ λ§μμ§ μμλ€λ©΄ -1 μμΉμ μ΅λκ°μ΄ νμ¬ μμΉμ μ΅λκ°μ΄λ€.
case 1κ³Ό case2μ 쑰건μ λ§μ§λ§ μμ 무쑰건 λ§μ μΌνκΈ° λλ¬Έμ κ³λ¨ μ€λ₯΄κΈ° λ¬Έμ μ λκ°μ΅λλ€. κ·Έλ¬λ μ΄λ² λ¬Έμ μμ λ€λ₯Έ 쑰건μ λ§μ§λ§ μμΈμ κΌ λ§μμ§ μμλ λκΈ° λλ¬Έμ 건λ λΈ μ μμ΅λλ€.
Python νμ΄
import sys
read = sys.stdin.readline
N = int(read())
wines = [0] + [int(read()) for _ in range(N)] + [0]
dp = [0] * (N+2)
dp[1] = wines[1]
dp[2] = dp[1] + wines[2]
for i in range(3, N+1):
dp[i] = max(dp[i-3]+wines[i-1]+wines[i], dp[i-2]+wines[i], dp[i-1])
print(dp[N])
- 1κ³Ό 2μ μμΉκΉμ§λ μ΅λκ°μ΄ μ°μμΌλ‘ λ§μ κ²½μ°μ΄λ―λ‘ μ΄κΈ°κ°μ μ§μ ν΄μ€λ€.
- μ΄κΈ°κ° μ€μ μ λλΌ dpμ 리μ€νΈ κΈΈμ΄λ₯Ό μ΄κΈ°κ° λ§νΌ λνκ³ wines μμͺ½μλ 리μ€νΈ κΈΈμ΄λ₯Ό μΆκ°νλ€.
- Nμ΄ 1 μΈ κ²½μ° wines[2] λλ¬Έμ Index out of bounds μ€λ₯κ° λ°μνλ€.
- 쑰건μ λ§κ² μ΅λκ°μ ꡬν΄μ μΆλ ₯νλ€.
λκΈ