<๋ฌธ์ ๋งํฌ>
https://school.programmers.co.kr/learn/courses/30/lessons/42897
<ํ์ด ์ ๋ต>
1. ๋ฐฑ์ค์ RGB ๊ฑฐ๋ฆฌ2(https://www.acmicpc.net/problem/17404)์ ์ ์ฌํ ๋ฌธ์ ์ด๋ค.
2. ์ฒซ์ง ๋๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๋ง์ง๋ง ์ง์ ๋๋์ง ์ฌ๋ถ๊ฐ ๊ฒฐ์ ๋๋ฏ๋ก ์ฒซ ์ง์ ๋๋์ง ์ฌ๋ถ์ ๋ํ ๊ฒฝ์ฐ์ ์๋ฅผ ๋๋ ์ ์ ํ์์ ์ธ์ฐ๋ฉด ๋๋ค.
<์ ๋ต ์ฝ๋>
def solution(money):
answer = 0
N = len(money)
# ์ฒซ ์ง์ ํธ๊ฑฐ๋ ์ ํธ๊ฑฐ๋
for i in range(2):
# dp ํ
์ด๋ธ ์ ์ธ ๋ฐ ์ด๊ธฐํ
dp = [0 for _ in range(N)]
# i == 0 -> ์ฒซ์ง 0, i == 1 -> ์ฒซ์ง x
dp[0] = money[i] if i == 0 else 0
dp[1] = max(dp[0], money[1])
# ์ ํ์: dp[j] = max(money[j] + dp[j - 2], dp[j - 1])
# max(ํ์ฌ์ง + ์ด์ ์ด์ ์ง, ์ง์ ์ง)
for j in range(2, N - 1):
dp[j] = max(money[j] + dp[j - 2], dp[j - 1])
# ๋ง์ง๋ง ์ง
if i == 0:
dp[-1] = dp[-2]
else:
dp[-1] = max(money[-1] + dp[- 3], dp[- 2])
answer = max(answer, dp[-1])
return answer
'โญ Problem_Solving > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฌํ๊ฒฝ๋ก (Python/ํ์ด์ฌ) (0) | 2023.02.10 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ (Python/ํ์ด์ฌ) (0) | 2023.02.09 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ณ ๋์ kit - ์์ ํ์ (Python/ํ์ด์ฌ) (0) | 2023.02.07 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ณ ๋์ kit - ์ ๋ ฌ (Python/ํ์ด์ฌ) (0) | 2023.02.05 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ณ ๋์ kit - ํ(Heap) (Python/ํ์ด์ฌ) (0) | 2023.02.04 |
๋๊ธ