Skip to content

Commit 81144c7

Browse files
authored
Merge pull request #1933 from AlgorithmWithGod/LiiNi-coder
[20260214] BOJ / G5 / 호텔 / 이인희
2 parents d51a6b1 + 7c1710f commit 81144c7

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
```java
2+
import java.io.BufferedReader;
3+
import java.io.IOException;
4+
import java.io.InputStreamReader;
5+
import java.util.StringTokenizer;
6+
7+
public class Main {
8+
public static void main(String[] args) throws IOException {
9+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
10+
StringTokenizer st = new StringTokenizer(br.readLine());
11+
int C = Integer.parseInt(st.nextToken());
12+
int N = Integer.parseInt(st.nextToken());
13+
int[] cost = new int[N];
14+
int[] people = new int[N];
15+
int maxP = 0;
16+
for (int i = 0; i < N; i++) {
17+
st = new StringTokenizer(br.readLine());
18+
cost[i] = Integer.parseInt(st.nextToken());
19+
people[i] = Integer.parseInt(st.nextToken());
20+
if (people[i] > maxP) {
21+
maxP = people[i];
22+
}
23+
}
24+
int target = C + maxP;
25+
int[] dp = new int[target + 1];
26+
int INF = 1_000_000_000;
27+
for (int i = 1; i <= target; i++) {
28+
dp[i] = INF;
29+
}
30+
31+
32+
dp[0] = 0;
33+
for (int i = 0; i < N; i++) {
34+
int p = people[i];
35+
int c = cost[i];
36+
for (int j = p; j <= target; j++) {
37+
if (dp[j - p] + c < dp[j]) {
38+
dp[j] = dp[j - p] + c;
39+
}
40+
}
41+
}
42+
43+
int answer = INF;
44+
for (int i = C; i <= target; i++) {
45+
if (dp[i] < answer) {
46+
answer = dp[i];
47+
}
48+
}
49+
System.out.println(answer);
50+
}
51+
}
52+
import java.io.BufferedReader;
53+
import java.io.IOException;
54+
import java.io.InputStreamReader;
55+
import java.util.StringTokenizer;
56+
57+
public class Main {
58+
public static void main(String[] args) throws IOException {
59+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
60+
StringTokenizer st = new StringTokenizer(br.readLine());
61+
int C = Integer.parseInt(st.nextToken());
62+
int N = Integer.parseInt(st.nextToken());
63+
int[] cost = new int[N];
64+
int[] people = new int[N];
65+
int maxP = 0;
66+
for (int i = 0; i < N; i++) {
67+
st = new StringTokenizer(br.readLine());
68+
cost[i] = Integer.parseInt(st.nextToken());
69+
people[i] = Integer.parseInt(st.nextToken());
70+
if (people[i] > maxP) {
71+
maxP = people[i];
72+
}
73+
}
74+
int target = C + maxP;
75+
int[] dp = new int[target + 1];
76+
int INF = 1_000_000_000;
77+
for (int i = 1; i <= target; i++) {
78+
dp[i] = INF;
79+
}
80+
81+
82+
dp[0] = 0;
83+
for (int i = 0; i < N; i++) {
84+
int p = people[i];
85+
int c = cost[i];
86+
for (int j = p; j <= target; j++) {
87+
if (dp[j - p] + c < dp[j]) {
88+
dp[j] = dp[j - p] + c;
89+
}
90+
}
91+
}
92+
93+
int answer = INF;
94+
for (int i = C; i <= target; i++) {
95+
if (dp[i] < answer) {
96+
answer = dp[i];
97+
}
98+
}
99+
System.out.println(answer);
100+
}
101+
}
102+
103+
```

0 commit comments

Comments
 (0)