ν°μ€ν 리 λ·°
νλ‘κ·Έλλ¨Έμ€: λλμ§
dirmathfl 2020. 10. 24. 21:31λ¬Έμ
μ½λ©ν μ€νΈ μ°μ΅ - λλμ§
λλμ΄ μ΄λ λ§μμ νΈ κ³νμ νκ³ μμ΅λλ€. μ΄ λ§μμ λͺ¨λ μ§λ€μ μλ κ·Έλ¦Όκ³Ό κ°μ΄ λκ·Έλκ² λ°°μΉλμ΄ μμ΅λλ€. κ° μ§λ€μ μλ‘ μΈμ ν μ§λ€κ³Ό λ°©λ²μ₯μΉκ° μ°κ²°λμ΄ μκΈ° λλ¬Έμ μΈμ ν
programmers.co.kr
λ¬Έμ νμ΄
μΈμ ν λ μ§μ λ°©λ²μ₯μΉκ° μ°κ²°λμ΄ νΈ μ μλ€λ μ ν 쑰건μ κ°μ§κ³ μλ€. μ΄λ μ§μ νΈμ΄μ κ°μ₯ ν°λμ νμΉ μ μλ μ΅λκ°μ λ°ννλ λ¬Έμ μ΄λ€. λ¬Έμ λ₯Ό νκΈ° μν΄μλ λ€μκ³Ό κ°μ κ²½μ°λ₯Ό μκ°νλ©΄ μ½κ² ν΄κ²°ν μ μλ€.
- μ§ 1κ° : ν΄λΉ μ§μ ν°λ κ²μ΄ μ΅λ κ°μ΄λ€.
- μ§ 2κ° : λ μ€μ `money`κ° ν° κ²μ ν°λ κ²μ΄ μ΅λ κ°μ΄λ€.
- μ§ 3κ° : `iμ i - 2` λλ `i - 1` μ§μ `money` μ€ μ΅λκ°μΈ κ²½μ°λ₯Ό ν°λ κ²μ΄ μ΅λμ΄λ€.
- μ§ 3κ° μΈ κ²½μ°μμ μ μ μλ―μ΄ κ²½μ°μ μκ° λ€μ 2κ°μ§λ‘ λλλ€.
- 첫 λ²μ§Έ μ§μ 무쑰건 ν°λ κ²½μ°.
- `dp[FIRST][0], dp[FIRST][1] = money[0], moeny[0]`λ‘ μ΄κΈ°ν νλ€.
- λ§μ§λ§ μ§μ 무쑰건 ν°λ κ²½μ°.
- `dp[LAST][0], dp[LAST][1] = 0, money[1]`λ‘ μ΄κΈ°ν νλ€.
- 첫 λ²μ§Έ μ§μ 무쑰건 ν°λ κ²½μ°.
μμ κ°μ κ²½μ°λ₯Ό ν΅ν΄ μ§μ νΈ μ μλ μ΅λκ°μ μ νμμ `dp[i] = max(dp[i - 1], money[i], dp[i - 2])`μ μ μΆν μ μλ€.
μ½λ
FIRST, LAST = 0, 1
def solution(money):
length = len(money)
dp = [[0] * length for _ in range(2)]
dp[FIRST][0], dp[FIRST][1] = money[0], money[0]
dp[LAST][0], dp[LAST][1] = 0, money[1]
for i in range(2, length):
if i < length - 1:
dp[FIRST][i] = max(dp[FIRST][i - 1], money[i] + dp[FIRST][i - 2])
dp[LAST][i] = max(dp[LAST][i - 1], money[i] + dp[LAST][i - 2])
return max(max(dp[FIRST]), max(dp[LAST]))
'π¨βπ» μ½λ©ν μ€νΈ > νλ‘κ·Έλλ¨Έμ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νλ‘κ·Έλλ¨Έμ€: λ°©λ¬Έ κΈΈμ΄ (0) | 2020.10.25 |
---|---|
νλ‘κ·Έλλ¨Έμ€: μ κ΅μ¬μ¬ (0) | 2020.10.25 |
νλ‘κ·Έλλ¨Έμ€: μ‘°μ΄μ€ν± (0) | 2020.10.23 |
νλ‘κ·Έλλ¨Έμ€: ν° μ λ§λ€κΈ° (0) | 2020.10.23 |
νλ‘κ·Έλλ¨Έμ€: SQL - IS NULL (0) | 2020.10.21 |