μ λ ₯
첫째 μ€μ ν¬λμ£Ό μμ κ°μ nμ΄ μ£Όμ΄μ§λ€. (1≤n≤10,000) λμ§Έ μ€λΆν° n+1λ²μ§Έ μ€κΉμ§ ν¬λμ£Ό μμ λ€μ΄μλ ν¬λμ£Όμ μμ΄ μμλλ‘ μ£Όμ΄μ§λ€. ν¬λμ£Όμ μμ 1,000 μ΄νμ μμ΄ μλ μ μμ΄λ€.
μΆλ ₯
첫째 μ€μ μ΅λλ‘ λ§μ€ μ μλ ν¬λμ£Όμ μμ μΆλ ₯νλ€.
ν΄κ²° λ°©λ²
ν¬λμ£Όλ₯Ό λ§μ€ μ μλ λ°©λ²μ μ΄λ»κ² λ κΉ?
dpλ₯Ό nλ²μ§Έ μκΉμ§ λ§μ€ λ κ°μ₯ λ§μ μμ ν¬λμ£Ό, grapeλ₯Ό nλ²μ§Έ μμ ν¬λμ£ΌλΌκ³ κ°μ νμ.
dp[0] = 0
dp[1] = 첫λ²μ§Έ μλ§ μμ λ = grape[1]
dp[2] = 첫λ²μ§Έ μκ³Ό λλ²μ§Έ μμ΄ μμ λ = grape[1] + grape[2]
dp[3] = 첫λ²μ§Έ μκ³Ό λλ²μ§Έ μ, μΈλ²μ§Έ μμ΄ μμ λ
(dp[3]λΆν°λ 3κ°μ μ°μλ μμ μ νν μ μμΌλ―λ‘ λ€λ₯Έ κ·μΉμ μ μ©ν΄μΌ νλ€.)
dp[1] + grape[3] (dp[2]λ grape[1] + grape[2] μ΄λ―λ‘ dp[2] + grape[3]μ νκ² λλ©΄ μ°μλ μΈ μμ΄λ€.)
dp[0] + grape[2] + grape[3]
λ κ°μ§μ λ°©λ²μ΄ λμ¬ μ μλ€. λ°λΌμ λ μ€ λ ν° κ°μ dpμ μ μ₯νλ©΄ λλ€.
μ΄λ₯Ό μ νμμΌλ‘ λνλ΄λ©΄ λ€μκ³Ό κ°λ€.
dp[i] = max(dp[i-2] + grape[i], dp[i-3] + grape[i-1] + grape[i]) (i ≥ 3)
νμ§λ§...
κ³μ "νλ Έμ΅λλ€"κ° λμ€λ κ²μ΄μλ€... μ νμμ λ¬Έμ κ° μμ΄λ³΄μ΄λλ°... κ²°κ΅ κ΅¬κΈλ§μ ν΅ν΄μ λ€λ₯Έ λΈλ‘κ·Έλ₯Ό μ°Έκ³ νλ€.
λ§μμ§ μλ κ²½μ°λ μκ°νμ΄μΌνλλ°... μ΄λ₯Ό μκ°μ λͺ»νλ€.
λ°λΌμ μ΅μ’ μ μΈ μ νμμ
dp[i] = max(max(dp[i-1], dp[i-2] + grape[i]), dp[i-3] + grape[i-1] + grape[i]) (i ≥ 3) κ° λλ€.
μ΅μ’ μ½λλ
μλ λ¬Έμ λ μ΄λ² λ¬Έμ λ³΄λ€ μλΉν μ μ¬ν λ¬Έμ μ΄λ€.
'λμ κ³νλ² 1'μ μ²μλΆν° νμλ€λ©΄ λ¨Όμ νμ΄λ΄€μ λ¬Έμ μ΄μ§λ§ μ°Έκ³ νλ©΄ μ’μ κ² κ°λ€.
'βοΈ μ½ν μ€λΉ > Dynamic Programming' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λμ κ³νλ² 1] [C++] 11054λ². κ°μ₯ κΈ΄ λ°μ΄ν λ λΆλΆ μμ΄ (0) | 2021.02.01 |
---|---|
[λμ κ³νλ² 1] [C++] 11053λ². κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄ (0) | 2021.01.25 |
[λμ κ³νλ² 1] [C++] 10844λ². μ¬μ΄ κ³λ¨ μ (0) | 2021.01.24 |
[λμ κ³νλ² 1] [C++] 1463λ². 1λ‘ λ§λ€κΈ° (0) | 2021.01.19 |
[λμ κ³νλ² 1] [C++] 2579λ². κ³λ¨ μ€λ₯΄κΈ° (0) | 2021.01.14 |