๋ฐฑ์ค 11052๋ฒ
์ ๋ฒ์ ํ์๋ ๋ฌธ์ ์ ์ ์ฌํ ๋ฌธ์ ์ฌ์ bfs๋ก ํ์๋ค๊ฐ ๋ต์ ๋ง์๋๋ฐ ์๊ฐ์ด๊ณผ์ ๊ฑธ๋ ค๋ฒ๋ ธ๋ค.
import sys
input = sys.stdin.readline
n = int(input())
n_li = list(map(int, input().split()))
cost = 0
com_cost = 0
def bfs(c, val):
global n, cost
if c == n:
if val > cost:
cost = val
return val
for i in range(1, (n - c)+1):
com_cost = bfs(i+c, val+n_li[i-1])
for i in range(1, n+1):
com_cost = 0
bfs(i, n_li[i-1])
print(cost)
๐ ์๊ฐ์ด๊ณผ์ ๊ฑธ๋ฆฌ๋ bfs์ฝ๋..ใ
dp๋ฅผ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ๋ฉด ์๊ฐ์ด๊ณผ์ ๊ฑธ๋ฆฌ์ง ์๋๋ค๊ธฐ์ ์ด๋ป๊ฒ ํ์ด์ผํ๋์ง ๊ณ ๋ฏผํด๋ดค๋๋ฐ.. ์๊ฐ์ด ๋์ง ์์ ๊ฒฐ๊ตญ ๋ต์ ์ฐพ์๋ณด์์ต๋๋ค.
import sys
input = sys.stdin.readline
n = int(input())
p = [0] + list(map(int, input().split()))
dp = [0 for _ in range(n+1)] #์นด๋๊ฐ์ด ์ต๋๊ฐ ๋๋ ๋น์ฉ์ ๋ด๋ ๋ฐฐ์ด
for i in range(1, n+1):
for j in range(1, i+1):
dp[i] = max(dp[i], dp[i-j] + p[j])
#์ด์ ์นด๋ ๊ฐฏ์๊น์ง์ ๊ฐ๊ฒฉ ํฉ์ด ์ต๋๊ฐ ๋๋ ๊ฒ์ ๊ตฌํ๋ค.
print(dp[n])