Skip to content

Commit f1526cb

Browse files
authored
[20251118] BOJ / G4 / 서울에서 경산까지 / 설진영
1 parent 04404e2 commit f1526cb

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
```java
2+
import java.io.*;
3+
import java.util.*;
4+
5+
public class Main {
6+
public static void main(String[] args) throws IOException {
7+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
8+
StringTokenizer st = new StringTokenizer(br.readLine());
9+
10+
int N = Integer.parseInt(st.nextToken());
11+
int K = Integer.parseInt(st.nextToken());
12+
13+
int[][] segments = new int[N][4];
14+
for (int i = 0; i < N; i++) {
15+
st = new StringTokenizer(br.readLine());
16+
for (int j = 0; j < 4; j++) {
17+
segments[i][j] = Integer.parseInt(st.nextToken());
18+
}
19+
}
20+
21+
int[] dp = new int[K + 1];
22+
Arrays.fill(dp, -1);
23+
dp[0] = 0;
24+
25+
for (int i = 0; i < N; i++) {
26+
int walkTime = segments[i][0];
27+
int walkMoney = segments[i][1];
28+
int bikeTime = segments[i][2];
29+
int bikeMoney = segments[i][3];
30+
31+
int[] newDp = new int[K + 1];
32+
Arrays.fill(newDp, -1);
33+
34+
for (int t = 0; t <= K; t++) {
35+
if (dp[t] == -1) continue;
36+
37+
if (t + walkTime <= K) {
38+
newDp[t + walkTime] = Math.max(newDp[t + walkTime], dp[t] + walkMoney);
39+
}
40+
41+
if (t + bikeTime <= K) {
42+
newDp[t + bikeTime] = Math.max(newDp[t + bikeTime], dp[t] + bikeMoney);
43+
}
44+
}
45+
46+
dp = newDp;
47+
}
48+
49+
int answer = 0;
50+
for (int t = 0; t <= K; t++) {
51+
if (dp[t] != -1) {
52+
answer = Math.max(answer, dp[t]);
53+
}
54+
}
55+
56+
System.out.println(answer);
57+
}
58+
}
59+
```

0 commit comments

Comments
 (0)