def calculate_n(temp_list, triangle, n):
result_list = []
is_visit = [False for _ in range(n + 1)]
for i in range(0, len(temp_list)):
if is_visit[i]:
result_list[i] = max(result_list[i], temp_list[i] + triangle[n][i])
else:
result_list.append(temp_list[i] + triangle[n][i])
is_visit[i] = True
result_list.append(temp_list[i] + triangle[n][i + 1])
is_visit[i + 1] = True
return result_list
def solution(triangle):
answer = 0
temp_set = {}
temp_set[0] = [triangle[0][0]]
for n in range(0, len(triangle) -1):
temp_set[n + 1] = calculate_n(temp_set[n], triangle, n + 1)
answer = max(temp_set[len(triangle) - 1])
return answer