[python]白駿1932号:整数三角形



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

に答える

1からnの第一挙動は正三角形に配列されているので、jの範囲はi+1であり、巡回する
1行ずつ下に移動し、前の値と現在の値を加算したときの最大値を選択します.
以前の値は、現在の値の真上から下と左上から下を考慮できます.
直接上から降りる場合はi==jと言えますが、この場合は右から降りる数字がないのでright=0です.
左上から下りた場合はj==0と言えますが、この場合、左下からの数字はないのでleft=0です.

コード#コード#

import sys
input = sys.stdin.readline
n=int(input())
maps = [list(map(int,input().split())) for _ in range(n)]

for i in range(1, n):
    for j in range(i+1):
        # 왼쪽 위에서 내려오는 경우
        if j==0:
            left = 0
        else:
            left = maps[i-1][j-1]
        # 바로 위에서 내려오는 경우
        if i==j:
            right = 0
        else:
            right = maps[i-1][j]
        maps[i][j] = maps[i][j] + max(right, left)
print(max(maps[-1]))