Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit b69348c

Browse files
authoredMar 27, 2025
Create BJ_2169_로봇조종하기.java
1 parent 538892b commit b69348c

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
 
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import java.io.BufferedReader;
2+
import java.io.IOException;
3+
import java.io.InputStreamReader;
4+
import java.util.StringTokenizer;
5+
6+
/**
7+
* 백준 2169번 로봇 조종하기
8+
* - dp
9+
*/
10+
11+
public class Main {
12+
public static void main(String[] args) throws IOException {
13+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
14+
StringTokenizer st = new StringTokenizer(br.readLine());
15+
16+
int N = Integer.parseInt(st.nextToken());
17+
int M = Integer.parseInt(st.nextToken());
18+
19+
int[][] map = new int[N + 1][M + 1];
20+
int[][][] dp = new int[N + 1][M + 1][3];
21+
22+
for (int i = 1; i <= N; i++) {
23+
st = new StringTokenizer(br.readLine());
24+
for (int j = 1; j <= M; j++) {
25+
map[i][j] = Integer.parseInt(st.nextToken());
26+
}
27+
}
28+
29+
for (int i = 1; i <= N; i++) {
30+
for (int j = 1; j <= M; j++) {
31+
dp[i][j][0] = dp[i][j][1] = dp[i][j][2] = -101 * N * M;
32+
}
33+
}
34+
35+
dp[1][1][0] = dp[1][1][1] = dp[1][1][1] = map[1][1];
36+
37+
for (int i = 1; i <= N; i++) {
38+
for (int j = 1; j <= M; j++) {
39+
if (i > 1) dp[i][j][1] = Math.max(dp[i - 1][j][0], Math.max(dp[i - 1][j][1], dp[i - 1][j][2])) + map[i][j];
40+
if (j > 1) dp[i][j][0] = Math.max(dp[i][j - 1][0], dp[i][j - 1][1]) + map[i][j];
41+
}
42+
43+
for (int j = M - 1; j >= 1; j--) {
44+
dp[i][j][2] = Math.max(dp[i][j + 1][1], dp[i][j + 1][2]) + map[i][j];
45+
}
46+
}
47+
48+
System.out.println(Math.max(dp[N][M][0], dp[N][M][1]));
49+
}
50+
}

0 commit comments

Comments
 (0)
Please sign in to comment.