๋ฌธ์
https://www.acmicpc.net/problem/2579
๋ด ๋ฌธ์ ํ์ด
import sys
n = int(sys.stdin.readline())
a = [0]*n # ํ์ฌ ๊ณ๋จ ๋ฐ๊ณ , ์ง์ ๊ณ๋จ ๋ฐ์๋ค๊ณ ํ ๋
b = [0]*n # ํ์ฌ ๊ณ๋จ ๋ฐ๊ณ , ์ง์ ๊ณ๋จ ๋ฐ์ง ์์๋ค๊ณ ํ ๋
for i in range(n):
now = int(sys.stdin.readline())
if i == 0:
a[i] = now
b[i] = now
elif i == 1:
a[i] = now + b[i-1]
b[i] = now
else:
a[i] = now + b[i - 1]
b[i] = now + max(a[i - 2], b[i - 2])
print(max(a[-1], b[-1]))
๐ DP ๋ฌธ์ ๋ก, ํ์ฌ ๊ณ๋จ์ ๋ฐ์์ ๋, ์ง์ ๊ณ๋จ์ ๋ฐ์๋์ง ์๋ฐ์๋์ง ๋๋ ์๊ฐํด์ฃผ๋๊ฒ ํฌ์ธํธ !
- ๊ณ๋จ์ ํ ์นธ์ฉ ์ฌ๋ผ๊ฐ๋ฉด์ 'ํ์ฌ' ๊ณ๋จ์ ๋ฐ์์ ๋์ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ด์ a, b ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด์ฃผ์๋ค.
a๋ ์ง์ ๊ณ๋จ์ ๋ฐ์๋ค๊ณ ๊ฐ์ ํ๊ณ , b๋ ์ง์ ๊ณ๋จ์ ๋ฐ์ง ์์๋ค๊ณ ๊ฐ์ ํ๋ ๋ฆฌ์คํธ์ด๋ค. - ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ฐ๋ฅด๋ฉด, ์ง์ ๊ณ๋จ์ ๋ฐ์์ ๊ฒฝ์ฐ ์ ์ ๊ณ๋จ์ ๋น์ฐํ ๋ฐ์ง ์์์ด์ผ ํ๋ค.
๋ฐ๋ผ์ a ๋ฆฌ์คํธ์๋ 'ํ์ฌ' ๊ณ๋จ์ ๊ฐ๊ณผ b์ ์ง์ ๋์ ๊ฐ์ ๋ํด์ฃผ์๋ค. - ์ง์ ๊ณ๋จ์ ๋ฐ์ง ์์์ ๊ฒฝ์ฐ, ์ ์ ๊ณ๋จ์ ๋น์ฐํ ๋ฐ์์ ๊ฒ์ด๋ค.
ํ์ง๋ง ์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์, ์ ์ ์ ๊ณ๋จ์ ๋ฐ์์ ์๋ ์๊ณ ์๋ฐ์์ ์๋ ์๋ค๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ b ๋ฆฌ์คํธ์ ๊ฒฝ์ฐ 'ํ์ฌ' ๊ณ๋จ ๊ฐ์ ์ ์ ์ ๋์ ๋ a, b ๊ฐ ์ค์ ๋ ํฐ ๊ฐ์ ๊ณจ๋ผ ๋ํ๋ค.
๐ก ํผ๋๋ฐฑ
- ์์ ๊ฐ์ ์ ํ์ DP ๋ฌธ์ ๋ค์, ๊ผญ ์ฐจ๋ก๋๋ก ๋ฐ๋ณตํ๋ฉฐ "'ํ์ฌ'๊ฒ์ ํฌํจํ๋ฉด"์ ์ ์ ๋ก
๋ฌธ์ ๋ฅผ ํ์ดํ๋ ๊ฒ์ ๊ธฐ๋ณธ์ผ๋ก ํ๋ฉด ์ข ๋ ์ฝ๊ฒ ์ ๊ทผํ์ฌ ํ ์ ์๋ ๊ฒ ๊ฐ๋ค.
'4๏ธโฃ Python > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python Algorithm] N๊ณผ M (1) BOJ #15649 (0) | 2022.02.15 |
---|---|
[Python Algorithm] Q-์ธ๋ฑ์ค BOJ #13333 (0) | 2022.02.10 |
[Python Algorithm] ๋ ๋ฐ๋จน๊ธฐ Programmers(Lv.2) (0) | 2022.02.04 |
[Python Algorithm] N๊ฐ์ ์ต์๊ณต๋ฐฐ์ Programmers(Lv.2) (0) | 2022.02.04 |
[Python Algorithm] JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ Programmers(Lv.2) (0) | 2022.02.04 |
๋๊ธ