Skip to content

Commit 30ac053

Browse files
authored
Merge pull request #1022 from AlgorithmWithGod/Ukj0ng
[20251001] BOJ / G4 / 사탕 가게 / 한종욱
2 parents b5aa7d1 + 542f19e commit 30ac053

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
```
2+
import java.io.*;
3+
import java.util.*;
4+
5+
public class Main {
6+
private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7+
private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
8+
private static int[] dp, w, v;
9+
private static int N, m;
10+
private static double M;
11+
public static void main(String[] args) throws IOException {
12+
13+
while (true) {
14+
init();
15+
if (N == 0 && M == 0.0) break;
16+
17+
DP();
18+
int answer = 0;
19+
for (int i = 0; i <= m; i++) {
20+
answer = Math.max(answer, dp[i]);
21+
}
22+
23+
bw.write(answer + "\n");
24+
}
25+
26+
bw.write("\n");
27+
bw.flush();
28+
bw.close();
29+
br.close();
30+
}
31+
32+
private static void init() throws IOException {
33+
StringTokenizer st = new StringTokenizer(br.readLine());
34+
N = Integer.parseInt(st.nextToken());
35+
M = Double.parseDouble(st.nextToken()) * 100;
36+
37+
if (N == 0 && M == 0.0) return;
38+
m = (int) (M+0.5);
39+
40+
w = new int[N];
41+
v = new int[N];
42+
43+
for (int i = 0; i < N; i++) {
44+
st = new StringTokenizer(br.readLine());
45+
v[i] = Integer.parseInt(st.nextToken());
46+
w[i] = (int) (Double.parseDouble(st.nextToken()) * 100 + 0.5);
47+
}
48+
49+
dp = new int[m+1];
50+
}
51+
52+
private static void DP() {
53+
for (int i = 0; i < N; i++) {
54+
for (int j = 0; j <= m; j++) {
55+
if (j - w[i] >= 0) {
56+
dp[j] = Math.max(dp[j], dp[j - w[i]] + v[i]);
57+
}
58+
}
59+
}
60+
}
61+
}
62+
```

0 commit comments

Comments
 (0)