[ 2023-03-19 ๐Ÿคฅ TIL ]

Burkeyยท2023๋…„ 3์›” 19์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
63/157

๋ฐฑ์ค€ 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])
profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

0๊ฐœ์˜ ๋Œ“๊ธ€