File tree Expand file tree Collapse file tree 1 file changed +31
-0
lines changed
Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Original file line number Diff line number Diff line change 1+ import sys
2+
3+ input = sys .stdin .readline
4+
5+ N , M = map (int , input ().split ())
6+ arr = []
7+ for i in range (N ):
8+ arr .append (list (map (int , input ().split ())))
9+
10+ # 첫번째 행의 최대가치는 왼쪽에서 오는 방향밖에 없음
11+ for i in range (1 , M ):
12+ arr [0 ][i ] += arr [0 ][i - 1 ]
13+
14+ for i in range (1 , N ):
15+ # 위쪽, 왼쪽에서 오는 경로의 최대 가치 저장
16+ dp1 = arr [i ][:]
17+ # 위쪽, 오른쪽에서 오는 경로의 최대 가치 저장
18+ dp2 = arr [i ][:]
19+ for j in range (M ):
20+ if j == 0 :
21+ # 첫번째 행은 왼쪽에서 오는 경로가 없음
22+ dp1 [j ] += arr [i - 1 ][j ]
23+ dp2 [M - 1 - j ] += arr [i - 1 ][M - 1 - j ]
24+ else :
25+ # 위에서 오거나 왼쪽에서 오는 것 중 최대값
26+ dp1 [j ] += max (arr [i - 1 ][j ], dp1 [j - 1 ])
27+ # 위에서 오거나 오른쪽에서 오는 것 중 최대값
28+ dp2 [M - 1 - j ] += max (arr [i - 1 ][M - 1 - j ], dp2 [M - j ])
29+ for j in range (M ):
30+ arr [i ][j ] = max (dp1 [j ], dp2 [j ])
31+ print (arr [- 1 ][- 1 ])
You can’t perform that action at this time.
0 commit comments