๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] 1932๋ฒˆ_์ •์ˆ˜ ์‚ผ๊ฐํ˜•

Dbswnstjd 2022. 11. 21. 02:50

๋ฌธ์ œ

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

 

1987๋ฒˆ: ์•ŒํŒŒ๋ฒณ

์„ธ๋กœ R์นธ, ๊ฐ€๋กœ C์นธ์œผ๋กœ ๋œ ํ‘œ ๋ชจ์–‘์˜ ๋ณด๋“œ๊ฐ€ ์žˆ๋‹ค. ๋ณด๋“œ์˜ ๊ฐ ์นธ์—๋Š” ๋Œ€๋ฌธ์ž ์•ŒํŒŒ๋ฒณ์ด ํ•˜๋‚˜์”ฉ ์ ํ˜€ ์žˆ๊ณ , ์ขŒ์ธก ์ƒ๋‹จ ์นธ (1ํ–‰ 1์—ด) ์—๋Š” ๋ง์ด ๋†“์—ฌ ์žˆ๋‹ค. ๋ง์€ ์ƒํ•˜์ขŒ์šฐ๋กœ ์ธ์ ‘ํ•œ ๋„ค ์นธ ์ค‘์˜ ํ•œ ์นธ์œผ

www.acmicpc.net

ํ’€์ด

DP๋ฅผ ์ด์šฉํ•œ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์ด๋‹ค. ๊ทœ์น™์„ ์ฐพ๋‹ค๋ณด๋ฉด ๋งค์šฐ ์‰ฝ๊ฒŒ ๋‚˜์˜จ๋‹ค.

# ๋ฐฑ์ค€ 1932๋ฒˆ ๋ฌธ์ œ - ์ •์ˆ˜ ์‚ผ๊ฐํ˜•
n = int(input())
dp = []
for _ in range(n):
    dp.append(list(map(int, input().split())))
for i in range(len(dp)):
    for j in range(len(dp[i])):
        if j == 0:
            dp[i][j] = dp[i][j] + dp[i-1][j]
        elif j == len(dp[i]) - 1:
            dp[i][j] = dp[i][j] + dp[i-1][j-1]
        else:
            dp[i][j] = dp[i][j] + max(dp[i-1][j-1], dp[i-1][j])
print(max(dp[-1]))