Skip to content

Commit 69c468a

Browse files
authored
Merge pull request #64 from AlgorithmWithGod/Seol-JY
[20250209] BOJ / 골드4 / 창영이와 퇴근 / �설진영
2 parents 1315e1b + 375e5bc commit 69c468a

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+
```java
2+
import java.io.BufferedReader;
3+
import java.io.IOException;
4+
import java.io.InputStreamReader;
5+
import java.util.*;
6+
public class Main {
7+
public static void main(String[] args) throws IOException {
8+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
9+
10+
int N = Integer.parseInt(br.readLine());
11+
int[][] grid = new int[N][N];
12+
13+
// 입력
14+
for(int i = 0; i < N; i++) {
15+
StringTokenizer st = new StringTokenizer(br.readLine());
16+
for(int j = 0; j < N; j++) {
17+
grid[i][j] = Integer.parseInt(st.nextToken());
18+
}
19+
}
20+
21+
// 다익스트라를 위한 초기화
22+
PriorityQueue<int[]> pq = new PriorityQueue<>((a,b) -> a[2] - b[2]); // [x, y, maxDiff]
23+
boolean[][] visited = new boolean[N][N];
24+
int[][] dist = new int[N][N];
25+
for(int i = 0; i < N; i++) {
26+
Arrays.fill(dist[i], Integer.MAX_VALUE);
27+
}
28+
29+
int[] dx = {-1, 1, 0, 0};
30+
int[] dy = {0, 0, -1, 1};
31+
32+
dist[0][0] = 0;
33+
pq.offer(new int[]{0, 0, 0});
34+
35+
while(!pq.isEmpty()) {
36+
int[] current = pq.poll();
37+
int x = current[0];
38+
int y = current[1];
39+
40+
if(visited[x][y]) continue;
41+
visited[x][y] = true;
42+
43+
for(int i = 0; i < 4; i++) {
44+
int nx = x + dx[i];
45+
int ny = y + dy[i];
46+
47+
if(nx < 0 || nx >= N || ny < 0 || ny >= N || visited[nx][ny]) continue;
48+
49+
int diff = Math.abs(grid[nx][ny] - grid[x][y]);
50+
int maxDiff = Math.max(dist[x][y], diff);
51+
52+
if(dist[nx][ny] > maxDiff) {
53+
dist[nx][ny] = maxDiff;
54+
pq.offer(new int[]{nx, ny, maxDiff});
55+
}
56+
}
57+
}
58+
59+
System.out.println(dist[N-1][N-1]);
60+
}
61+
}
62+
```

0 commit comments

Comments
 (0)