Skip to content

Commit 3a6789f

Browse files
authored
Merge pull request #1605 from AlgorithmWithGod/JHLEE325
[20251207] BOJ / G5 / 벽장문의 이동 / 이준희
2 parents 025ba3a + 9511b34 commit 3a6789f

File tree

1 file changed

+57
-0
lines changed

1 file changed

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

0 commit comments

Comments
 (0)