λ¬Έμ λ§ν¬: programmers.co.kr/learn/courses/30/lessons/42897
λ¬Έμ μ€λͺ
λλμ΄ νμΉ μ μλ λμ μ΅λκ°μ μ μ₯νλ dp ν μ΄λΈμ μμ±ν©λλ€. dp[i]λ 1λ²λΆν° iλ²μ§Έ μ§κΉμ§ νΈμμ λ νμΉ μ μλ λμ μ΅λκ°μ λλ€.
λ§μ½ μ΄μ μ§μ νΈμλ€λ©΄ νμ¬ μ§μ νΈμ§ λͺ»νλ―λ‘ dp[i]λ (λ°λ‘ μ μ§κΉμ§ νμΉ μ μλ μ΅λκ°)μ (μ μ μ§κΉμ§μ νμΉ μ μλ μ΅λκ° + νμ¬ μ§μ money) λ κ°μ§ κ²½μ°λ‘ λλ©λλ€.
dp[i] = max(dp[i - 1], dp[i - 2] + dp[i])
μ΄λ λ§μ§λ§ μ§μ 첫 λ²μ§Έ μ§κ³Ό λ°©λ²μ₯μΉκ° μ°κ²°λμ΄ μμΌλ―λ‘ dpν μ΄λΈ κ³μ°μ 1λ² μ§μ νΈ κ²½μ°/ μ νΈ κ²½μ°λ‘ λλ μ μννμ΅λλ€.
1λ² μ§μ νΈ κ²½μ°: 2λ²λΆν° λ§μ§λ§ λ°λ‘ μ μ§κΉμ§ νμΉ μ μλ λ κ³μ°(λ§μ§λ§ μ§μ νΈμ§ λͺ»ν¨)
1λ² μ§μ νΈμ§ μμ κ²½μ°: 2λ²λΆν° λ§μ§λ§ μ§κΉμ§ νμΉ μ μλ λ κ³μ°
μ΄νμ λ κ°μ§ κ²½μ° μ€ λ ν° κ°μ λ°νν©λλ€.
μμ€μ½λ
def solution(money):
dp1 = [0] * len(money)
dp2 = [0] * len(money)
# 1λ² μ§μ ν°λ κ²½μ°
dp1[0] = money[0]
for i in range(1, len(money) - 1): # λ§μ§λ§ μ§μ νΈμ§ λͺ»ν¨
dp1[i] = max(dp1[i - 1], dp1[i - 2] + money[i])
# 1λ² μ§μ μν°λ κ²½μ°
dp1[0] = 0
for i in range(1, len(money)):
dp2[i] = max(dp2[i - 1], dp2[i - 2] + money[i])
return max(dp1[-2], dp2[-1])
'Algorithm > νλ‘κ·Έλλ¨Έμ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€ / Python νμ΄μ¬] λ€νΈ κ²μ(2018 μΉ΄μΉ΄μ€ μ½λ©ν μ€νΈ 1μ°¨) (0) | 2021.04.09 |
---|---|
[νλ‘κ·Έλλ¨Έμ€ / Python] λΉλ°μ§λ(2018 μΉ΄μΉ΄μ€ μ½λ©ν μ€νΈ 1μ°¨) (0) | 2021.04.09 |
[νλ‘κ·Έλλ¨Έμ€ / Python] λ±κ΅£κΈΈ (0) | 2021.04.06 |
[νλ‘κ·Έλλ¨Έμ€ / Python] μ μ μΌκ°ν (0) | 2021.04.06 |
[νλ‘κ·Έλλ¨Έμ€ / Python] NμΌλ‘ νν (0) | 2021.04.06 |