| μΌ | μ | ν | μ | λͺ© | κΈ | ν |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- νμ΄μ¬
- μΉ΄μΉ΄μ€
- λ€μ΄λλ―Ήνλ‘κ·Έλλ°
- Blind
- BFS
- μλ°μ€ν¬λ¦½νΈ
- νλ‘κ·Έλλ¨Έμ€
- Backjoon
- λ°±μ€
- SWμλν μ€νΈ
- DP
- Python
- javascript
- μκ³ λ¦¬μ¦
- algorithm
- μλ£κ΅¬μ‘°
- μΈνΌ
- SWEA
- μ½ν
- μΌμ±
- AXZ
- SSAFY
- κ·Έλν
- μ€ν
- νν
- μμ νμ
- sort
- DFS
- boj
- μ½λ©ν μ€νΈ
- Today
- Total
λ§μν
[python] νλ‘κ·Έλλ¨Έμ€ - λλμ§ λ³Έλ¬Έ
π€λ¬Έμ ν΄κ²°
Lv4 | DP
"μΈμ ν μ§μ νΈ μ μλ€" κΉμ§λ ν¬κ² μ΄λ €μ΄ λ¬Έμ κ° μλμ§λ§
"λ§μμ΄ μνμΌλ‘ λμ΄ μλ€" μμ νλ² λ μκ°νκ² νλ λ¬Έμ !!
-> 0λ²μ§Έ μ§μ ν°λ κ²½μ°( λ§μ§λ§ μ§μ νΈμ§ λͺ»νλ€ )μ 0λ²μ§Έ μ§μ μν°λ κ²½μ° λκ°μ§λ‘ λλ μ μλ€.
λ¨Όμ 0λ²μ§μ νΈ κ²½μ°!
- 0λ²μ§μ λ€λ μ λ κ°μ₯ λ§μ λμ κ°μ Έμ€λ κ²½μ°λ 0λ²μ§μ ν΄λ€. dp[0] = money[0]
- 1λ²μ§μ λ€λ μ λ κ°μ₯ λ§μ λμ κ°μ Έμ€λ κ²½μ°λ 1λ²μ§μ ν°λ κ²½μ°μ§λ§ μ°λ¦¬λ 1λ²μ§μ λ°λμ νΈμλ€κ³ κ°μ νμΌλ―λ‘ μΈμ ν 2λ²μ§μ νΈ μ μλ€. dp[1] = 0
- 2λ²μ§μ λ€λ μ λ: μΈμ ν 1λ²μ§μ΄ μλ 0λ²μ§ λλ -1λ²μ§(2λ²μΌ λλ μλ€) μ€ λμ λ§μ΄ κ°μ Έμλ μ§μμ μ¨λ€.
dp[2] = money[i] + max(dp[i-2], dp[i-1]) - λ§μ§λ§μΌλ‘ nλ²μ§Έ μ§μ μλ€κ³ κ°μ ν΄μΌνλ€. (1λ²μ§μ νΈμμΌλ―λ‘ 1λ²κ³Ό μΈμ ν nλ²μ§μ νΈλ©΄ μλ¨!!)
λ€μ 0λ²μ§μ μν°λ κ²½μ°!
- 0λ²μ§μ νΈμ§ μμΌλ―λ‘ dp[0] = 0
- 0λ²μ§ μνΈμμΌλ 1λ²μ§μ νλ€. dp[1] = money[1]

π¨

π»μμ€ μ½λ
def solution(money):
answer = 0
n = len(money)
# 0λ²μ§ νΈκΈ°
dp1 = [0] * (n - 1)
dp1[0] = money[0]
dp1[1] = 0
for i in range(2, n - 1):
dp1[i] = money[i] + max(dp1[i - 2], dp1[i - 3])
# 0λ²μ§ μνΈκΈ°
dp2 = [0] * (n)
dp2[0] = 0
dp2[1] = money[1]
for i in range(2, n):
dp2[i] = money[i] + max(dp2[i - 2], dp2[i - 3])
answer = max(max(dp1), max(dp2))
return answer
πλ¬Έμ νμΈ
μΆμ²: νλ‘κ·Έλλ¨Έμ€
λ§ν¬: https://programmers.co.kr/learn/courses/30/lessons/42897
μ½λ©ν μ€νΈ μ°μ΅ - λλμ§
λλμ΄ μ΄λ λ§μμ νΈ κ³νμ νκ³ μμ΅λλ€. μ΄ λ§μμ λͺ¨λ μ§λ€μ μλ κ·Έλ¦Όκ³Ό κ°μ΄ λκ·Έλκ² λ°°μΉλμ΄ μμ΅λλ€. κ° μ§λ€μ μλ‘ μΈμ ν μ§λ€κ³Ό λ°©λ²μ₯μΉκ° μ°κ²°λμ΄ μκΈ° λλ¬Έμ μΈμ ν οΏ½οΏ½
programmers.co.kr
λ¬Έμ μ€λͺ
λλμ΄ μ΄λ λ§μμ νΈ κ³νμ νκ³ μμ΅λλ€. μ΄ λ§μμ λͺ¨λ μ§λ€μ μλ κ·Έλ¦Όκ³Ό κ°μ΄ λκ·Έλκ² λ°°μΉλμ΄ μμ΅λλ€.

κ° μ§λ€μ μλ‘ μΈμ ν μ§λ€κ³Ό λ°©λ²μ₯μΉκ° μ°κ²°λμ΄ μκΈ° λλ¬Έμ μΈμ ν λ μ§μ νΈλ©΄ κ²½λ³΄κ° μΈλ¦½λλ€.
κ° μ§μ μλ λμ΄ λ΄κΈ΄ λ°°μ΄ moneyκ° μ£Όμ΄μ§ λ, λλμ΄ νμΉ μ μλ λμ μ΅λκ°μ return νλλ‘ solution ν¨μλ₯Ό μμ±νμΈμ.
μ νμ¬ν
- μ΄ λ§μμ μλ μ§μ 3κ° μ΄μ 1,000,000κ° μ΄νμ λλ€.
- money λ°°μ΄μ κ° μμλ 0 μ΄μ 1,000 μ΄νμΈ μ μμ λλ€.
μ μΆλ ₯ μ
| money | return |
| [1, 2, 3, 1] | 4 |
'Algorithm Problem > Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [python] νλ‘κ·Έλλ¨Έμ€ - μ§κ²λ€λ¦¬ (4) | 2020.09.13 |
|---|---|
| [python] νλ‘κ·Έλλ¨Έμ€ - N-Queen (2) | 2020.09.13 |
| [python] νλ‘κ·Έλλ¨Έμ€ - μ¬νκ²½λ‘ (0) | 2020.09.12 |
| [python] νλ‘κ·Έλλ¨Έμ€ - 무μ§μ λ¨Ήλ°© λΌμ΄λΈ(2019 KAKAO BLIND RECRUITMENT) (0) | 2020.09.11 |
| [python] νλ‘κ·Έλλ¨Έμ€ - λΈλ‘ κ²μ(2019 KAKAO BLIND RECRUITMENT) (3) | 2020.09.11 |