광석 수집 (Bottom-up)


답안 제출

Points: 8
시간 제한: 2.0s
메모리 제한: 1G

문제 유형
허용된 언어
C++

광석을 수집하는 SCV가 격자 모양의 광역 지대에서 작업하고 있다.

SCV는 항상 격자의 맨 왼쪽 위인 \((1,1)\)에서 출발하여 맨 오른쪽 아래인 \((N,M)\)에서 작업을 마친다. 한 번 이동할 때 오른쪽 또는 아래쪽으로 한 칸만 이동할 수 있다.

SCV가 지나가는 칸에 광석이 있다면 그 광석을 수집한다. 시작 칸과 도착 칸에 있는 광석도 수집할 수 있다.

격자의 크기와 광석의 배치가 주어졌을 때, SCV가 수집할 수 있는 광석의 최대 개수를 Bottom-up 방식으로 구하시오.

미리 작성된 코드

아래 코드에서 주석으로 표시된 부분에 코드를 작성한다.

#include <stdio.h>

int arr[201][201];
int dt[201][201];

int main() {
    int n, m;
    int i, j;

    scanf("%d %d", &n, &m);
    for (i = 1; i <= n; i++) {
        for (j = 1; j <= m; j++) {
            scanf("%d", &arr[i][j]);
        }
    }

    /* 코드를 작성하세요. */

    printf("%d", dt[n][m]);
}

제출할 때는 입력 이후에 들어갈 Bottom-up 계산 코드만 제출한다. 헤더, main 함수의 시작 부분, 입력 코드, 출력 코드와 마지막 닫는 중괄호는 제출하지 않는다.

입력

첫째 줄에 광역 지대의 세로 크기 \(N\)과 가로 크기 \(M\)이 공백으로 구분되어 주어진다.

둘째 줄부터 \(N\)개의 줄에 걸쳐 각 줄마다 \(M\)개의 정수가 공백으로 구분되어 주어진다.

각 정수는 0 또는 1이다. 1은 해당 칸에 광석이 있음을, 0은 빈 칸임을 의미한다.

출력

첫째 줄에 SCV가 수집할 수 있는 광석의 최대 개수를 출력한다.

제한 사항

  • \(1 \le N \le 200\)
  • \(1 \le M \le 200\)

예제 입력 1

5 4
0 1 0 0
0 0 1 0
1 1 0 0
1 0 1 0
1 1 0 0

예제 출력 1

4

코멘트

현재 작성된 코멘트가 없습니다.