๐ญ ๋ฌธ์ ์ดํด
๋ ์๋ฅผ ์ธ์ ํ์ง ์๊ฒ ์ ํํ์ฌ ์ต๋ ํฉ์ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
๋ง์์ด ์ํ๊ตฌ์กฐ์ด๋ฏ๋ก 1, 2, 3, 4๋ฒ ์ง์ด ์์ ๋,
1๋ฒ์ 2๋ฒ, 4๋ฒ๊ณผ ์ธ์ ํด์๋ค.
๋ฐ๋ผ์ 1๋ฒ์ ์ ํํ ๋์ ๊ฒฝ์ฐ(2, 4๋ฒ์ ์ ํ๋ถ๊ฐ)์ 1๋ฒ์ ์ ํํ์ง ์์ ๊ฒฝ์ฐ(1๋ฒ๋ง ์ฌ์ฉ๋ถ๊ฐ)๋ฅผ ๋๋์ด์
๋ ๊ฒฐ๊ณผ๊ฐ ์ค ์ต๋๋ฅผ ๋ฐํํ๋ฉด ๋๋ค.
๊ตฌํ ์ธ์ด: Python
def solution(money):
# 3 1 4 7 2 5
case1 = [i for i in money]
case2 = [i for i in money]
# ์ฒซ ๋ฒ์งธ๋ฅผ ์ ํํ๋ ๊ฒฝ์ฐ
case1[1], case1[-1] = case1[0], 0
# ์ฒซ ๋ฒ์งธ๋ฅผ ์ ํํ์ง ์๋ ๊ฒฝ์ฐ
case2[0] = 0
for i in range(2, len(money)):
case1[i] = max(case1[i-1], case1[i-2] + case1[i])
case2[i] = max(case2[i-1], case2[i-2] + case2[i])
# print(f'case1: {case1}')
# print(f'case2: {case2}')
return max(case1[-1], case2[-1])
์ฌ๊ธฐ์, ์ ์ถํ์ ๋ ๊ณ์ํด์ 1๋ฒ ์ผ์ด์ค๋ง ํ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์ปค๋ฎค๋ํฐ์ ๋ค๋ฅธ ๋ถ๋ค์ด ์ฌ๋ ค์ฃผ์ ๋๊ธ์ ํ์ธํด๋ณด๋ ๋๋ ์ด์ (i-1)๊ณผ ๊ทธ ์ด์ (i-2)๋ฅผ ์ฒดํฌํ๋๋ฐ,
10 0 0 1000 10 2 ์ ๊ฐ์ ๊ฒฝ์ฐ ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์๋ด์ง ๋ชปํ๋ ๊ฑธ ๋ฐ๊ฒฌํ๋ค.
์ ์์ ์์ 10๋ฅผ ์ ํํ๋ ๊ฒฝ์ฐ, ๋ ๋ฒ์งธ์ธ 0๊ณผ ๋ง์ง๋ง์ธ 2๋ฅผ 0์ผ๋ก ์ด๊ธฐํํ์๋๋ฐ
๋ ๋ฒ์งธ ๊ฐ์ธ 0์ ์ฒซ ๋ฒ์งธ์ ๊ฐ์ ๊ฐ์ธ 10์ผ๋ก ๋ง๋ค์ด์ ์ฒซ ๋ฒ์งธ ๊ฐ์ ์์ค์ ํด๊ฒฐํ ์ ์์๋ค.
'Problem_Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ / ํ(Queue) (0) | 2021.03.12 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ฐ์ฅ ํฐ ์ / ์ ๋ ฌ (0) | 2021.03.11 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฑ๊ตฃ๊ธธ / ๋์ ๊ณํ๋ฒ(Dynamic-Programming) (0) | 2021.03.11 |
[BOJ] ๋ฐฑ์ค 1535 ์๋ / ๋์ ๊ณํ๋ฒ(Dynamic-Programming) (0) | 2021.03.11 |
[BOJ] ๋ฐฑ์ค 2512 ์์ฐ / ์ด๋ถํ์ (0) | 2021.02.11 |