Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- boj 2470
- 백준 2661
- 백준 2470
- 백준 2178
- boj 1806
- 백준 2206
- boj 2178
- boj 2167
- boj 2667
- 2167
- 백준 1697
- boj 2108
- boj 2635
- 백준 1503
- boj 10800
- boj 2661
- boj 2206
- boj 19238
- 백준 1806
- 백준 2167
- 백준 10800
- 백준 19238
- 10800
- 백준 2636
- 백준 2635
- boj 2636
- 백준 2108
- 2636
- boj 1697
- boj 1503
Archives
- Today
- Total
말랑말랑한 개발자 이야기
[백준 14430번] 자원 캐기 본문
[백준 14430번] 자원 캐기
문제
인류의 차세대 인공지능 자원 캐기 로봇인 WOOK은 인간 대신 자원을 캐는 로봇이다. WOOK은 언제나 제한된 범위 내에서 자원을 탐색하며, 왼쪽 위 (1, 1)부터 오른쪽 아래 (N, M)까지 자원을 탐색한다. WOOK은 한 번에 오른쪽 또는 아래쪽으로 한 칸 이동할 수 있으며, 그 외의 방향으로 움직이는 것은 불가능하다. WOOK은 자신이 위치한 (x, y)에 자원이 있는 경우에만 해당 자원을 채취할 수 있다. WOOK이 탐사할 영역에 대한 정보가 주어질 때, WOOK이 탐색할 수 있는 자원의 최대 숫자를 구해라!
입력
첫째 줄에 WOOK이 탐사할 영역의 세로길이 N(1≤N≤300)과 가로길이 M(1≤M≤300)이 주어진다. 그 다음 N행 M열에 걸쳐 탐사영역에 대한 정보가 주어진다. 숫자는 공백으로 구분된다. (자원은 1, 빈 땅은 0으로 표시된다)
출력
WOOK이 수집할 수 있는 최대 광석의 개수를 출력하라.
풀이
#include <iostream>
#include <queue>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int N, M;
int arr[300][300]={0,};
int dp[300][300]={0,};
cin >> N >> M;
for(int i=0;i<N;i++){
for(int j=0;j<M;j++){
cin >> arr[i][j];
}
}
dp[0][0] = arr[0][0];
for(int i=1;i<N;i++) dp[i][0] = dp[i-1][0] + arr[i][0];
for(int j=1;j<M;j++) dp[0][j] = dp[0][j-1] + arr[0][j];
for(int i=1;i<N;i++){
for(int j=1;j<M;j++){
dp[i][j] = max(dp[i-1][j], dp[i][j-1]) + arr[i][j];
}
}
cout << dp[N-1][M-1];
return 0;
}
처음에 생각도 별로 안하고 BFS로 접근했다가 메모리초과를 받았다. 방문체크 없이 나가기 때문에 O(2^N)으로 BFS로는 풀 수가 없다. DP가 올바른 접근인데 문제에서 왼쪽 위부터 시작하여 오른쪽 아래로 도달할 때까지 이동하는 방법이 오른쪽으로 가거나 아래로만 갈 수 있기 때문에 DP로 풀 수 있다. 제일 윗 줄과 왼쪽 줄의 값을 먼저 구해 준뒤 특정 위치의 값을 구할 때 왼쪽 값과 윗쪽 값을 비교하여 큰 것을 고르는 식으로 풀면 된다.
'알고리즘 > 백준' 카테고리의 다른 글
[백준 1260번] DFS와 BFS (0) | 2021.05.23 |
---|---|
[백준 9024번] 두 수의 합 (0) | 2021.05.23 |
[백준 17779번] 게리맨더링2 (0) | 2021.05.18 |
[백준 5557번] 1학년 (0) | 2021.05.18 |
[백준 19947번] 투자의 귀재 배주형 (0) | 2021.05.18 |