[ 2023-04-13 ๐ŸงคTIL ]

Burkeyยท2023๋…„ 4์›” 13์ผ
0

TIL

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

๋ฐฑ์ค€ 1932๋ฒˆ

import sys

input = sys.stdin.readline

n = int(input())
n_tree = []

for _ in range(n):
    leaf = list(map(int, input().split()))
    n_tree.append(leaf)

# ๊นŠ์ด๊ฐ€ ์ฆ๊ฐ€ํ•  ๋•Œ ๋งˆ๋‹ค ๊นŠ์ด ๊ฐ’๋งŒํผ์˜ ๋ฐฐ์—ดํฌ๊ธฐ๊ฐ€ ์ง€์ •๋œ๋‹ค.
dp = [[0 for _ in range(i)] for i in range(1, n+1)]
dp[0][0] = n_tree[0][0]  # ์ฒซ ๋ฒˆ์งธ ์š”์†Œ ๋„ฃ์–ด์„œ ์‹œ์ž‘

for i in range(1, n):
    for j in range(i+1):
        if j == 0:
            dp[i][j] = dp[i-1][0] + n_tree[i][0]
        elif j == i:
            dp[i][j] = dp[i-1][j-1] + n_tree[i][j]
		#dpeth์˜ ์ฒซ ๊ฐ’๊ณผ ๋ ๊ฐ’์€ ์ด์ „ depth์˜ ๋™์ผ ์ธ๋ฑ์Šค ๊ฐ’์„ ๋”ํ•œ ๊ฐ’์ด ๋“ค์–ด๊ฐ„๋‹ค.(๋น„๊ตํ•  ํ•„์š” ์—†์Œ)
        else:
        	# ๋น„๊ต ๋Œ€์ƒ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ
            # ์ด์ „ depth์˜ 2๊ฐœ์˜ ๊ฐ’๊ณผ ๋น„๊ตํ•˜์—ฌ ํฐ ๊ฐ’ ๋„ฃ๊ธฐ
            com1 = dp[i-1][j-1] + n_tree[i][j]
            com2 = dp[i-1][j] + n_tree[i][j]
            if com1 > com2:
                dp[i][j] = com1
            else:
                dp[i][j] = com2
print(max(dp[n-1]))

์ฒ˜์Œ์— ํ’€์—ˆ๋˜ ๋ฐฉ๋ฒ•์ด ์ž˜๋ชป๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ๊ณ ..
์–ด๋–ป๊ฒŒ ํ’€์–ด์•ผ๋Š”์ง€ ํ’€์ด๋ฅผ ์ฐพ์•„๋ณด๊ณ  ๋‹ค์‹œ ํ’€์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์œ„์— ๋ฌธ์ œ์—์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ dp[0][0] = n_tree[0][0]๋ฅผ ๋„ฃ์—ˆ์„ ๊ฒฝ์šฐ, for i in range(1,n)๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์•ˆ๋„ฃ์—ˆ์„ ๊ฒฝ์šฐ์—๋Š”for i in range(n) ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ œ ์ƒ๊ฐ์—๋Š” dp[0][0]์˜ ๊ฐ’์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค ์•Œ๊ณ  ์žˆ์œผ๋‹ˆ.. ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ๋„ฃ์–ด์ฃผ๊ฒŒ ์ข‹์„ ๊ฒƒ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด๋“ญ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ €์˜ ์ƒ๊ฐ์ž„ ๋ฐ˜๋ณต ํšŸ์ˆ˜๋„ ์ค„์–ด๋“œ๋‹ˆ ๊ธฐ๋Šฅ ์ƒ์—๋„ ์ข‹๊ณ ..

ํ‹€๋ฆฐ ์ฝ”๋“œ ๊ณต๊ฐœ๐Ÿ˜—

import sys

input = sys.stdin.readline

n = int(input())
n_tree = []

for _ in range(n):
    leaf = list(map(int, input().split()))
    n_tree.append(leaf)

dp = [[0 for _ in range(2**i)] for i in range(1, n+1)] 
# ๋ฉ”๋ชจ๋ฆฌ์ดˆ๊ณผ ์—ฌ๊ธฐ์„œ ๋ฐœ์ƒํ•˜๋Š” ๋“ฏ..
dp[0][0] = n_tree[0][0]

for i in range(1, n):
    index = 0
    for j in range(len(n_tree[i])-1):
        dp[i][index] = n_tree[i][j] + dp[i-1][j]
        dp[i][index+1] = n_tree[i][j+1] + dp[i-1][j]
        index += 2

print(max(dp[n-1]))

depth๊ฐ€ ์ฆ๊ฐ€ํ•  ๋•Œ ๋งˆ๋‹ค 2 ^ depth๋งŒํผ์˜ ๊ณ„์‚ฐ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋ ค ํ–ˆ์ง€๋งŒ...ใ…Žใ…Ž ๋งํ•จ ๐Ÿ˜‚

profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

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