# 정수 삼각형 import sys input = sys.stdin.readline def solution(): n = int(input().rstrip()) triangle = [[] for _ in range(n)] for i in range(n): triangle[i] = list(map(int, input().rstrip().split())) dp = [[0] * i for i in range(1, n+1)] dp[0][0] = triangle[0][0] for i in range(1, n): for j in range(len(dp[i])): for k in range(2): if j-k >= len(dp[i-1]) or j-k < 0: continue dp[i][j] = max(dp[i][j], dp[i-1][j-k]+triangle[i][j]) print(max(dp[n-1])) return solution() """ 걸린 시간: 15분 시간 복잡도: 전체 수에 대해서 진행하기 때문에 O(n^2)이다. 해설: 1149번(RGB로 집 칠하기) 문제랑 비슷하다. 현재 값을 선택할 때 여기까지 올 수 있는 경우의 수 중 최선의 플레이를 고르고, 마지막에 마지막 라인 중에서 최선을 선택하는 방식이다. 1149번에서 설명했지만, 그리디와는 다르게 현재 선택한 수가 최선일지는 모르는 것이기 때문이다. """