Skip to content

Commit a6f1c54

Browse files
committed
[BFS] baekjoon-7576
1 parent 3dddf3a commit a6f1c54

File tree

4 files changed

+103
-0
lines changed

4 files changed

+103
-0
lines changed

โ€ŽREADME.md

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
| 05 | | [Baekjoon-16236 ์•„๊ธฐ ์ƒ์–ด](./src/BFS/P16236) | ์‚ผ์„ฑ SW ์—ญ๋Ÿ‰ ํ…Œ์ŠคํŠธ ๊ธฐ์ถœ |
4141
| 06 | | [Baekjoon-14502 ์—ฐ๊ตฌ์†Œ](./src/BFS/P14502) | ์‚ผ์„ฑ SW ์—ญ๋Ÿ‰ ํ…Œ์ŠคํŠธ ๊ธฐ์ถœ |
4242
| 07 | | [Baekjoon-1525 ํผ์ฆ](./src/BFS/P1525) | |
43+
| 08 | | [Baekjoon-7576 ํ† ๋งˆํ† ](./src/BFS/P7576) | |
4344

4445
## Simulation
4546

โ€Žsrc/BFS/P7576/Main.java

+92
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package BFS.P7576;
2+
3+
import java.io.BufferedReader;
4+
import java.io.FileInputStream;
5+
import java.io.InputStreamReader;
6+
import java.util.Arrays;
7+
import java.util.LinkedList;
8+
import java.util.Queue;
9+
import java.util.StringTokenizer;
10+
11+
public class Main {
12+
13+
static int M, N;
14+
static int[][] box;
15+
16+
static int[] di = {-1, 0, 1, 0};
17+
static int[] dj = {0, 1, 0, -1};
18+
19+
static Queue<Position> q = new LinkedList<>();
20+
static int ans = -1;
21+
22+
public static void main(String[] args) throws Exception {
23+
System.setIn(new FileInputStream("src/BFS/P7576/input.txt"));
24+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
25+
StringTokenizer st = new StringTokenizer(br.readLine());
26+
27+
M = Integer.parseInt(st.nextToken());
28+
N = Integer.parseInt(st.nextToken());
29+
30+
box = new int[N][M];
31+
for (int i = 0; i < N; i++) {
32+
st = new StringTokenizer(br.readLine());
33+
for (int j = 0; j < M; j++) {
34+
box[i][j] = Integer.parseInt(st.nextToken());
35+
if (box[i][j] == 1) q.offer(new Position(i, j));
36+
}
37+
}
38+
39+
while (!q.isEmpty()) {
40+
ans ++;
41+
if (checkDone()) break;
42+
43+
int curSize = q.size();
44+
for (int i = 0; i < curSize; i++) {
45+
Position cur = q.poll();
46+
for (int t = 0; t < 4; t++) {
47+
int to_i = cur.i + di[t];
48+
int to_j = cur.j + dj[t];
49+
50+
if (isValidPath(to_i, to_j) && box[to_i][to_j] == 0) {
51+
box[to_i][to_j] = 1;
52+
q.offer(new Position(to_i, to_j));
53+
}
54+
}
55+
}
56+
}
57+
58+
if (!checkDone()) System.out.println(-1);
59+
else System.out.println(ans);
60+
}
61+
62+
static boolean isValidPath(int i, int j) {
63+
return 0 <= i && i < N && 0 <= j && j < M;
64+
}
65+
66+
static boolean checkDone() {
67+
for (int i = 0; i < N; i++) {
68+
for (int j = 0; j < M; j++) {
69+
if (box[i][j] == 0) return false;
70+
}
71+
}
72+
return true;
73+
}
74+
}
75+
76+
class Position {
77+
int i;
78+
int j;
79+
80+
public Position(int i, int j) {
81+
this.i = i;
82+
this.j = j;
83+
}
84+
85+
@Override
86+
public String toString() {
87+
return "Position{" +
88+
"i=" + i +
89+
", j=" + j +
90+
'}';
91+
}
92+
}

โ€Žsrc/BFS/P7576/README.md

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
## [baekjoon-7576] ํ† ๋งˆํ† 
2+
3+
![image](https://user-images.githubusercontent.com/22045163/96839353-052ce900-1484-11eb-845f-d76c0d11a9a3.png)
4+

โ€Žsrc/BFS/P7576/input.txt

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
5 5
2+
-1 1 0 0 0
3+
0 -1 -1 -1 0
4+
0 -1 -1 -1 0
5+
0 -1 -1 -1 0
6+
0 0 0 0 0

0 commit comments

Comments
ย (0)