본문 바로가기

백준

백준14430 - 자원 캐기

https://www.acmicpc.net/problem/14430

 

14430번: 자원 캐기

인류의 차세대 인공지능 자원 캐기 로봇인 WOOK은 인간 대신 자원을 캐는 로봇이다. WOOK은 언제나 제한된 범위 내에서 자원을 탐색하며, 왼쪽 위 (1, 1)부터 오른쪽 아래 (N, M)까지 자원을 탐색한다. WOOK은 한 번에 오른쪽 또는 아래쪽으로 한 칸 이동할 수 있으며, 그 외의 방향으로 움직이는 것은 불가능하다. WOOK은 자신이 위치한 (x, y)에 자원이 있는 경우에만 해당 자원을 채취할 수 있다. WOOK이 탐사할 영역에 대한 정보가 주

www.acmicpc.net

이차원 배열에서 갈 수 있는 방향이 아래와 오른쪽만 주어져서 다이나믹 프로그래밍을 이용하여 풀었다. 현재 칸으로 갈 수 있는 최대의 자원수를 먹어가면서 나아가면 된다.

#include <iostream>
#include <algorithm>
#define MAX 301
using namespace std;

int N, M;
int d[MAX][MAX] = {0,};
int mat[MAX][MAX] = {0,};

int main() {
    cin >> N >> M;
    for(int i = 1; i <= N; i++) {
        for(int j = 1 ; j <= M; j++) {
            cin >> mat[i][j];
        }
    }
    
    for(int i = 1; i <= N; i++) {
        for(int j = 1; j <= M; j++) {
            d[i][j] = max(d[i][j], d[i - 1][j] + mat[i][j]); //위에서 접근
            d[i][j] = max(d[i][j], d[i][j - 1] + mat[i][j]); //왼쪽에서 접근
        }
    }
    
    cout << d[N][M]; //마지막 칸은 결론적으로 최대의 값을 같는다.
    return 0;
}

'백준' 카테고리의 다른 글

백준11607 - Grid  (0) 2020.05.01
백준9753 - 짝 곱  (0) 2020.04.21
백준11659 - 구간 합 구하기4  (0) 2020.04.12
백준11559 - Puyo Puyo  (0) 2020.04.09
백준1325 - 효율적인 해킹  (0) 2020.04.08