π€λ¬Έμ ν΄κ²°
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
λ¬Έμ μ€λͺ
λλμ΄ μ΄λ λ§μμ νΈ κ³νμ νκ³ μμ΅λλ€. μ΄ λ§μμ λͺ¨λ μ§λ€μ μλ κ·Έλ¦Όκ³Ό κ°μ΄ λκ·Έλκ² λ°°μΉλμ΄ μμ΅λλ€.
κ° μ§λ€μ μλ‘ μΈμ ν μ§λ€κ³Ό λ°©λ²μ₯μΉκ° μ°κ²°λμ΄ μκΈ° λλ¬Έμ μΈμ ν λ μ§μ νΈλ©΄ κ²½λ³΄κ° μΈλ¦½λλ€.
κ° μ§μ μλ λμ΄ λ΄κΈ΄ λ°°μ΄ 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 |