[๋ฐฑ์ค€-1932] ์ •์ˆ˜ ์‚ผ๊ฐํ˜• / Python

๐Ÿ“š Problem Solving/Baekjoon

https://www.acmicpc.net/problem/1932

 

1932๋ฒˆ: ์ •์ˆ˜ ์‚ผ๊ฐํ˜•

์ฒซ์งธ ์ค„์— ์‚ผ๊ฐํ˜•์˜ ํฌ๊ธฐ n(1 ≤ n ≤ 500)์ด ์ฃผ์–ด์ง€๊ณ , ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ n+1๋ฒˆ์งธ ์ค„๊นŒ์ง€ ์ •์ˆ˜ ์‚ผ๊ฐํ˜•์ด ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net

n = int(input())
data = []
for _ in range(n):
    data.append(list(map(int, input().split())))

k = 2
for i in range(1, n):
    for j in range(k):
        if j == 0:
            data[i][j] = data[i][j] + data[i - 1][j]
        elif i == j:
            data[i][j] = data[i][j] + data[i - 1][j - 1]
        else:
            data[i][j] = max(data[i - 1][j - 1], data[i - 1][j]) + data[i][j]
    k += 1

print(max(data[-1]))

 

ํ•ด์„ค

์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด์€ ์„ธ ๊ฐ€์ง€๋‹ค.

์ง„ํ–‰ ๋ผ์ธ์˜ ์ฒ˜์Œ ๊ฐ’, ๋งˆ์ง€๋ง‰ ๊ฐ’, ๋‚˜๋จธ์ง€ ๊ฐ’์„ ์ •ํ•˜๋Š” ๊ฒฝ์šฐ๋‹ค.

๋ผ์ธ์˜ ์ฒ˜์Œ ๊ฐ’์€ ํ˜„์žฌ ๊ฐ’ + ์ด์ „์˜ ์ฒ˜์Œ ๊ฐ’

๋ผ์ธ์˜ ๋งˆ์ง€๋ง‰ ๊ฐ’์€ ํ˜„์žฌ ๊ฐ’ + ๋ผ์ธ์˜ ๋งˆ์ง€๋ง‰ ๊ฐ’

๊ทธ ์™ธ ๋‚˜๋จธ์ง€ ๊ฐ’๋“ค์€ ๋งˆ์ฃผํ•˜๊ณ  ์žˆ๋Š” ์–‘ ์ชฝ ๋Œ€๊ฐ์„ ์˜ ์ด์ „ ๊ฐ’๋“ค ์ค‘ ๋” ํฐ ๊ฐ’์„ ํ˜„์žฌ ๊ฐ’๊ณผ ๋”ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.