Skip to content

Commit 1079c27

Browse files
authored
Merge pull request #1826 from AlgorithmWithGod/Ukj0ng
[20260124] BOJ / G3 / 카드 게임 / 한종욱
2 parents 037a7f3 + 0827410 commit 1079c27

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
```
2+
import java.io.*;
3+
import java.util.*;
4+
5+
public class Main {
6+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7+
private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
8+
private static int[][] dp;
9+
private static int[] arr;
10+
private static int N;
11+
12+
public static void main(String[] args) throws IOException {
13+
int T = Integer.parseInt(br.readLine());
14+
15+
while (T-->0) {
16+
init();
17+
int answer = DP(1, N, true);
18+
bw.write(answer + "\n");
19+
}
20+
bw.flush();
21+
bw.close();
22+
br.close();
23+
}
24+
25+
private static void init() throws IOException {
26+
N = Integer.parseInt(br.readLine());
27+
arr = new int[N+1];
28+
dp = new int[N+1][N+1];
29+
30+
StringTokenizer st = new StringTokenizer(br.readLine());
31+
32+
for (int i = 1; i <= N; i++) {
33+
arr[i] = Integer.parseInt(st.nextToken());
34+
Arrays.fill(dp[i], -1);
35+
}
36+
}
37+
38+
private static int DP(int left, int right, boolean isGeunWoo) {
39+
if (left > right) return 0;
40+
41+
if (dp[left][right] != -1) return dp[left][right];
42+
43+
if (isGeunWoo) {
44+
int pickLeft = arr[left] + DP(left+1, right, false);
45+
int pickRight = arr[right] + DP(left, right-1, false);
46+
return dp[left][right] = Math.max(pickLeft, pickRight);
47+
} else {
48+
int pickLeft = DP(left+1, right, true);
49+
int pickRight = DP(left, right-1, true);
50+
return dp[left][right] = Math.min(pickLeft, pickRight);
51+
}
52+
}
53+
}
54+
```

0 commit comments

Comments
 (0)