ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๐ฉ DP
thinking
์ ํ์ ์ธ DP ๋ฌธ์ ์ด๋ค.
๋ฌด์กฐ๊ฑด ๋ง์ง๋ง ๊ณ๋จ์ ๋ฐ์์ผ ํ๋ฏ๋ก ๋ฆฌ์คํธ๋ฅผ ๋ค์ง์ด 0๋ฒ ์ธ๋ฑ์ค๋ถํฐ ์์ํด์คฌ๋ค.
์ฐ์๋ ์ธ ๊ฐ์ ๊ณ๋จ์ ๋ฐ์ผ๋ฉด ์๋๊ธฐ ๋๋ฌธ์ dp[i-1]+s[i]
๋ก ํ์ง ์๊ณ dp[i-3]+s[i-1]+s[i]
๋ก ์ค์ ํด์คฌ๋ค.
๋ฐํ์์๋ฌ (IndexError) ์ฃผ์ !
์ฒซ๊ณ๋จ๊ณผ ๋๋ฒ์งธ ๊ณ๋จ์ ์๋์ฒ๋ผ ์ค์ ํ๋๋ ์ธ๋ฑ์ค ์๋ฌ๊ฐ ๋ฌ๋ค. range์ ๋ฒ์๊ฐ 3 ์ดํ์ผ ์ ์์ผ๋ฏ๋ก ํจ์ฐ์ฝ๋์ฒ๋ผ ์์ฑํด์ผ ํ๋ค.
# Index Error ๋ ๋ถ๋ถ
dp = [0]*N
dp[0] = s[0]
dp[1] = s[0]+s[1]
dp[2] = s[0]+s[2]
for i in range(3, N):
dp[i] = max(dp[i-2]+s[i], dp[i-3]+s[i-1]+s[i])
์ฝ๋
N = int(input())
s = [int(input()) for _ in range(N)]
s.reverse()
dp = [0]*N
dp[0] = s[0]
for i in range(1, N):
if i < 3:
dp[i] = s[0] + s[i]
else:
dp[i] = max(dp[i-2]+s[i], dp[i-3]+s[i-1]+s[i])
print(max(dp[N-2], dp[N-1]))
'algorithm > baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 21609. ์์ด ์คํ๊ต / python ํ์ด์ฌ (1) | 2021.07.11 |
---|---|
[๋ฐฑ์ค] 20057. ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋ / python ํ์ด์ฌ (1) | 2021.07.05 |
[๋ฐฑ์ค] 2003. ์๋ค์ ํฉ 2 / python ํ์ด์ฌ / ํฌํฌ์ธํฐ, ๊ตฌ๊ฐํฉ (0) | 2021.06.30 |
[๋ฐฑ์ค] 1927. ์ต์ํ / 11279. ์ต๋ํ / python ํ์ด์ฌ (0) | 2021.06.06 |
[๋ฐฑ์ค] 10026. ์ ๋ก์์ฝ / python ํ์ด์ฌ (0) | 2021.06.03 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
TAG
- 17406 ๋ฐฐ์ด๋๋ฆฌ๊ธฐ4
- ํ์ด์ฌ
- ํ๋ก๊ทธ๋๋จธ์ค
- 2018 ์นด์นด์ค ๊ณต์ฑ
- ๋ณด์์ผํ
- merge์๋ฌ
- merge ์๋ฌ
- ์๊ณ ๋ฆฌ์ฆ
- ์ผ์ฑ๊ธฐ์ถ
- dp
- ์ผ์ฑ์ฝํ
- swea
- 20056 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ
- ๋ธ๋ฃจํธํฌ์ค
- ๋ฐฑ์ค
- git ๋ฏธ๋ฌ๋ง
- 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋
- 21609 ์์ด ์คํ๊ต
- ๊ธฐ์ง๊ตญ์ค์น
- 2579 ๊ณ๋จ์ค๋ฅด๊ธฐ
- react
- BFS
- dfs
- ์์ด๋๋ง์๊ธฐ
- Python
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
- Total
- Today
- Yesterday
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ