n = int(input())
li= [list(map(int, input().split())) for _ in range(n)]
for i in range(1,n):
for a in range(len(li[i])):
if a == 0:
li[i][a]+=li[i-1][a]
elif a == i:
li[i][a]+=li[i-1][a-1]
else:
li[i][a]+=max(li[i-1][a], li[i-1][a-1])
print(max(li[n-1]))
처음칸은 안 변하니 다음 칸부터 본다. li에 더한 값을 저장할 것이다. 해당 열을 모두 보는데 첫 번쨰 값은 그냥 전 행 0번쨰 값을 더하고 저장. 끝 값들은 전행의 끝 값 더하고 끝 (선택지가 그거밖에 없음)
근데 다른 애들은 대각선 양옆중에 더 큰 애를 더해서 저장.
맨 바닥까지 와서 가장 큰 값 출력
'Koala - 15기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준 / Python] 1965번: 상자넣기 (0) | 2024.07.12 |
---|---|
[백준/C++] 9465번: 스티커 (0) | 2024.07.12 |
[백준/java]-11053 가장 긴 증가하는 부분 수열 (0) | 2024.07.11 |
[백준/Python3] 1463번 : 1로 만들기 (0) | 2024.07.10 |
[백준/Rust] 1912번 : 연속합 (0) | 2024.07.09 |