Skip to content

Commit 4cb0a3d

Browse files
committed
[Silver I] Title: 미로 탐색, Time: 128 ms, Memory: 15200 KB -BaekjoonHub
1 parent bdea943 commit 4cb0a3d

2 files changed

Lines changed: 60 additions & 2 deletions

File tree

백준/Silver/2178. 미로 탐색/README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,15 @@
44

55
### 성능 요약
66

7-
메모리: 2116 KB, 시간: 0 ms
7+
메모리: 15200 KB, 시간: 128 ms
88

99
### 분류
1010

11-
너비 우선 탐색(bfs), 그래프 이론(graphs), 그래프 탐색(graph_traversal)
11+
그래프 이론, 그래프 탐색, 너비 우선 탐색, 격자 그래프
12+
13+
### 제출 일자
14+
15+
2026년 1월 26일 19:44:22
1216

1317
### 문제 설명
1418

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import java.io.BufferedReader;
2+
//import java.io.FileInputStream;
3+
import java.io.InputStreamReader;
4+
import java.util.*;
5+
6+
public class Main {
7+
8+
private static int[][] map;
9+
private static int[] dx = {1, 0, -1, 0};
10+
private static int[] dy = {0, 1, 0, -1};
11+
12+
public static void main(String[] args) throws Exception {
13+
//System.setIn(new FileInputStream("input.txt")); // 제출 시 이 줄만 주석처리
14+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
15+
StringTokenizer st = new StringTokenizer(br.readLine());
16+
17+
int n = Integer.parseInt(st.nextToken());
18+
int m = Integer.parseInt(st.nextToken());
19+
20+
map = new int[n][m];
21+
for (int i = 0; i < n; i++) {
22+
String line = br.readLine();
23+
for (int j = 0; j < line.length(); j++) {
24+
map[i][j] = Integer.parseInt(String.valueOf(line.charAt(j)));
25+
}
26+
}
27+
28+
Deque<int[]> deque = new ArrayDeque<>();
29+
boolean[][] visited = new boolean[n][m];
30+
deque.add(new int[]{0, 0, 1});
31+
visited[0][0] = true;
32+
33+
while (!deque.isEmpty()) {
34+
int[] cur = deque.poll();
35+
int cx = cur[0];
36+
int cy = cur[1];
37+
int dist = cur[2];
38+
if (cx == n - 1 && cy == m - 1) {
39+
System.out.println(dist);
40+
return;
41+
}
42+
43+
for (int i = 0; i < 4; i++) {
44+
int nx = cx + dx[i];
45+
int ny = cy + dy[i];
46+
47+
if (nx >= 0 && nx < n && ny >= 0 && ny < m && !visited[nx][ny] && map[nx][ny] == 1) {
48+
visited[nx][ny] = true;
49+
deque.add(new int[]{nx, ny, dist + 1});
50+
}
51+
}
52+
}
53+
}
54+
}

0 commit comments

Comments
 (0)