Skip to content

Commit 561cbb6

Browse files
authored
Merge pull request #1980 from AlgorithmWithGod/zinnnn37
[20260228] BOJ / G5 / 계란으로 계란치기 / 김민진
2 parents 3a1f876 + a3b171a commit 561cbb6

1 file changed

Lines changed: 81 additions & 0 deletions

File tree

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
```java
2+
import java.io.*;
3+
import java.util.StringTokenizer;
4+
5+
public class BJ_16987_계란으로_계란치기 {
6+
7+
private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
8+
private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
9+
private static StringTokenizer st;
10+
11+
private static int N, ans;
12+
private static int[][] eggs;
13+
14+
public static void main(String[] args) throws IOException {
15+
init();
16+
sol();
17+
}
18+
19+
private static void init() throws IOException {
20+
N = Integer.parseInt(br.readLine());
21+
22+
eggs = new int[N][2];
23+
for (int i = 0; i < N; i++) {
24+
st = new StringTokenizer(br.readLine());
25+
26+
eggs[i][0] = Integer.parseInt(st.nextToken());
27+
eggs[i][1] = Integer.parseInt(st.nextToken());
28+
}
29+
}
30+
31+
private static void sol() throws IOException {
32+
dfs(0, 0);
33+
34+
bw.write(ans + "");
35+
bw.flush();
36+
bw.close();
37+
br.close();
38+
}
39+
40+
private static void dfs(int depth, int broken) {
41+
if (depth == N) {
42+
ans = Math.max(ans, broken);
43+
return;
44+
}
45+
46+
if (eggs[depth][0] <= 0) {
47+
dfs(depth + 1, broken);
48+
return;
49+
}
50+
51+
boolean canHit = false;
52+
53+
for (int i = 0; i < N; i++) {
54+
if (i == depth) continue;
55+
if (eggs[i][0] <= 0) continue;
56+
57+
canHit = true;
58+
59+
int beforeCur = eggs[depth][0];
60+
int beforeOp = eggs[i][0];
61+
62+
eggs[depth][0] -= eggs[i][1];
63+
eggs[i][0] -= eggs[depth][1];
64+
65+
int brokenNow = 0;
66+
if (beforeCur > 0 && eggs[depth][0] <= 0) brokenNow++;
67+
if (beforeOp > 0 && eggs[i][0] <= 0) brokenNow++;
68+
69+
dfs(depth + 1, broken + brokenNow);
70+
71+
eggs[depth][0] = beforeCur;
72+
eggs[i][0] = beforeOp;
73+
}
74+
75+
if (!canHit) {
76+
dfs(depth + 1, broken);
77+
}
78+
}
79+
80+
}
81+
```

0 commit comments

Comments
 (0)