Skip to content

Commit fb6f36c

Browse files
authored
Merge pull request #1665 from AlgorithmWithGod/zinnnn37
[20251213] BOJ / G2 / 로봇 조종하기 / 김민진
2 parents f555e13 + f96140e commit fb6f36c

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
```java
2+
import java.io.*;
3+
import java.util.Arrays;
4+
import java.util.StringTokenizer;
5+
6+
public class BJ_2169_로봇_조종하기 {
7+
private static final int INF = -987654321;
8+
9+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
10+
private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
11+
private static StringTokenizer st;
12+
13+
private static int N, M;
14+
private static int[] ldp, rdp;
15+
private static int[][] matrix, dp;
16+
17+
public static void main(String[] args) throws IOException {
18+
init();
19+
sol();
20+
}
21+
22+
private static void init() throws IOException {
23+
st = new StringTokenizer(br.readLine());
24+
25+
N = Integer.parseInt(st.nextToken());
26+
M = Integer.parseInt(st.nextToken());
27+
28+
matrix = new int[N + 1][M + 1];
29+
for (int i = 1; i <= N; i++) {
30+
st = new StringTokenizer(br.readLine());
31+
for (int j = 1; j <= M; j++) {
32+
matrix[i][j] = Integer.parseInt(st.nextToken());
33+
}
34+
}
35+
36+
dp = new int[N + 1][M + 1];
37+
ldp = new int[M + 2];
38+
rdp = new int[M + 2];
39+
40+
for (int i = 2; i <= N; i++) {
41+
Arrays.fill(dp[i], INF);
42+
}
43+
44+
for (int i = 1; i <= M; i++) {
45+
dp[1][i] = dp[1][i - 1] + matrix[1][i];
46+
}
47+
}
48+
49+
private static void sol() throws IOException {
50+
for (int i = 2; i <= N; i++) {
51+
clear();
52+
for (int j = 1; j <= M; j++) {
53+
ldp[j] = matrix[i][j] + Math.max(dp[i - 1][j], ldp[j - 1]);
54+
}
55+
56+
for (int j = M; j > 0; j--) {
57+
rdp[j] = matrix[i][j] + Math.max(dp[i - 1][j], rdp[j + 1]);
58+
}
59+
60+
for (int j = 1; j <= M; j++) {
61+
dp[i][j] = Math.max(ldp[j], rdp[j]);
62+
}
63+
}
64+
65+
bw.write(dp[N][M] + "");
66+
bw.flush();
67+
bw.close();
68+
br.close();
69+
}
70+
71+
private static void clear() {
72+
Arrays.fill(ldp, INF);
73+
Arrays.fill(rdp, INF);
74+
}
75+
76+
}
77+
```

0 commit comments

Comments
 (0)