격자 이동 1
\(N\)행 \(M\)열의 격자가 있다. 각 칸에는 정수가 하나씩 적혀 있다.
왼쪽 위 칸인 \((1,1)\)에서 출발하여 오른쪽 아래 칸인 \((N,M)\)까지 이동하려고 한다. 현재 칸에서 다음 두 방향 중 하나로 이동할 수 있다.
- 오른쪽: \((r,c)\)에서 \((r,c+1)\)로 이동한다.
- 아래쪽: \((r,c)\)에서 \((r+1,c)\)로 이동한다.
격자 밖으로 이동할 수 없다. 경로에 포함된 모든 칸의 값을 더했을 때 얻을 수 있는 합의 최댓값을 구하여라. 시작 칸과 도착 칸의 값도 합에 포함한다.
입력
첫째 줄에 격자의 행의 수 \(N\)과 열의 수 \(M\)이 공백으로 구분되어 주어진다.
다음 \(N\)개의 줄에 걸쳐 격자에 적힌 정수가 주어진다. 이 중 \(i\)번째 줄의 \(j\)번째 정수는 \((i,j)\)에 적힌 값 \(A_{i,j}\)이다.
출력
가능한 경로에서 얻을 수 있는 합의 최댓값을 출력한다.
제한
- \(1 \le N,M \le 1,000\)
- \(-1,000 \le A_{i,j} \le 1,000\)
- 입력으로 주어지는 값은 모두 정수이다.
예제 입력 1
3 3
1 2 3
4 5 6
7 8 9
예제 출력 1
29
\((1,1)\)에서 시작하여 \((2,1)\), \((3,1)\), \((3,2)\), \((3,3)\)의 순서로 이동하면 합은 \(1+4+7+8+9=29\)이다.
예제 입력 2
2 2
-1 -2
-3 -4
예제 출력 2
-7
오른쪽으로 이동한 뒤 아래쪽으로 이동하면 합은 \(-1+(-2)+(-4)=-7\)이다.
코멘트