문제링크 : https://www.acmicpc.net/problem/14430
14430번: 자원 캐기
인류의 차세대 인공지능 자원 캐기 로봇인 WOOK은 인간 대신 자원을 캐는 로봇이다. WOOK은 언제나 제한된 범위 내에서 자원을 탐색하며, 왼쪽 위 (1, 1)부터 오른쪽 아래 (N, M)까지 자원을 탐색한다.
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = 987654321;
int N, M;
int arr[301][301], dp[301][301];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> N >> M;
for(int i=1; i<=N; i++)
{
for(int j=1; j<=M; j++)
{
cin >> arr[i][j];
}
}
for(int i=1; i<=N; i++)
{
for(int j=1; j<=M; j++)
{
dp[i][j] = max({dp[i][j], dp[i-1][j] + (arr[i][j]==1), dp[i][j-1] + (arr[i][j]==1)}); //위->아래, 왼쪽->오른쪽 + 자원 여부 확인
}
}
cout << dp[N][M];
return 0;
}
이동방향이 위->아래 / 왼쪽 -> 오른쪽 이렇게 2가지이다.
따라서 현재값, 위->아래 + 자원유무, 왼쪽->오른쪽 + 자원유무 중 가장 큰 값을 골라서 dp에 저장한다.
자원의 경우 있으면 1 없으면 0을 담아야 하므로 (arr[i][j]==1)을 통해 자원 유무를 체크하여 더해주도록 했다.
(1인 경우가 있는 경우)
'백준 > 실버' 카테고리의 다른 글
[백준 1747번] 소수&팰린드롬 (C++) (0) | 2024.01.21 |
---|---|
[백준 17212번] 달나라 토끼를 위한 구매대금 지불 도우미 (C++) (0) | 2024.01.16 |
[백준 14606번] 피자 (Small) (C++) (0) | 2024.01.10 |
[백준 19947번] 투자의 귀재 배추형 (C++) (0) | 2024.01.09 |
[백준 15312번] 이름 궁합 (C++) (0) | 2024.01.08 |