π λ¬Έμ μ€λͺ
λλμ΄ μ΄λ λ§μμ νΈ κ³νμ νκ³ μμ΅λλ€. μ΄ λ§μμ λͺ¨λ μ§λ€μ μλ κ·Έλ¦Όκ³Ό κ°μ΄ λκ·Έλκ² λ°°μΉλμ΄ μμ΅λλ€.
![](https://blog.kakaocdn.net/dn/QPpqx/btrOB1baKNv/qoFpjor9HN6zJ1P9WsoxoK/img.png)
κ° μ§λ€μ μλ‘ μΈμ ν μ§λ€κ³Ό λ°©λ²μ₯μΉκ° μ°κ²°λμ΄ μκΈ° λλ¬Έμ μΈμ ν λ μ§μ νΈλ©΄ κ²½λ³΄κ° μΈλ¦½λλ€.
κ° μ§μ μλ λμ΄ λ΄κΈ΄ λ°°μ΄ moneyκ° μ£Όμ΄μ§ λ, λλμ΄ νμΉ μ μλ λμ μ΅λκ°μ return νλλ‘ solution ν¨μλ₯Ό μμ±νμΈμ.
μ νμ¬ν
- μ΄ λ§μμ μλ μ§μ 3κ° μ΄μ 1,000,000κ° μ΄νμ λλ€.
- money λ°°μ΄μ κ° μμλ 0 μ΄μ 1,000 μ΄νμΈ μ μμ λλ€.
μ μΆλ ₯ μ
[1, 2, 3, 1] | 4 |
π νμ΄ μ½λ
def solution(money):
answer = 0
if len(money) == 1:
return money.pop()
size = len(money)
# 1λ² μ ννλ κ²½μ° -> 1..n-1λ² λ°°μ΄μ λν DP
dp1 = [0] + money[:-1]
for i in range(2, size):
dp1[i] = max(dp1[i-1], dp1[i-2] + dp1[i])
# 2λ² μ ννλ κ²½μ° -> 2...nλ² λ°°μ΄μ λν DP
dp2 = [0] + money[1:]
for i in range(2, size):
dp2[i] = max(dp2[i-1], dp2[i-2] + dp2[i])
answer = max(dp1[-1], dp2[-1])
return answer
μν DPμ λν λ¬Έμ μ΄λ€.
[νλ‘κ·Έλλ¨Έμ€] μ€ν°μ»€ λͺ¨μΌκΈ°(2) (level3, python)
π λ¬Έμ μ€λͺ Nκ°μ μ€ν°μ»€κ° μνμΌλ‘ μ°κ²°λμ΄ μμ΅λλ€. λ€μ κ·Έλ¦Όμ N = 8μΈ κ²½μ°μ μμμ λλ€. μνμΌλ‘ μ°κ²°λ μ€ν°μ»€μμ λͺ μ₯μ μ€ν°μ»€λ₯Ό λ―μ΄λ΄μ΄ λ―μ΄λΈ μ€ν°μ»€μ μ ν μ«μμ ν©μ΄
hoons-dev.tistory.com
μ λ¬Έμ μ μμ ν λμΌν λ¬Έμ μ΄λ©°, μ½λλ§μ λμΌνλ€.
Levelμ μ°¨μ΄κ° λλ μ΄μ λ λλμ§ λ¬Έμ κ° ν¨μ¨μ± 체ν¬λ₯Ό λ κ°νκ² νκΈ° λλ¬ΈμΌλ‘ 보μ΄λλ°, λ λ€ μν DP νμ΄λ‘ νλ¦°λ€.
μ΄ λ¬Έμ μ ν΄μ€μ λν΄ μκ³ μΆλ€λ©΄, μ λ§ν¬μ ν΄μ€ κΈμ λμμμΌλ μ°Έκ³ λ°λλ€.
'π μ½λ©ν μ€νΈ λλΉ : PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] λ€μ μλ ν° μ μ°ΎκΈ° (level2, python) (0) | 2023.04.10 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] μ°μ λΆλΆ μμ΄ ν©μ κ°μ (level2, python) (0) | 2022.10.14 |
[νλ‘κ·Έλλ¨Έμ€] μ€ν°μ»€ λͺ¨μΌκΈ°(2) (level3, python) (0) | 2022.10.14 |
[νλ‘κ·Έλλ¨Έμ€] λ°°λ¬ (level2, python) (0) | 2022.10.13 |
[νλ‘κ·Έλλ¨Έμ€] μ¬ μ°κ²°νκΈ° (level3, python) (1) | 2022.10.13 |