Skip to content

Commit 3dddf3a

Browse files
committed
[DFS] baekjoon-4963
1 parent cdfaf8a commit 3dddf3a

File tree

4 files changed

+106
-0
lines changed

4 files changed

+106
-0
lines changed

Diff for: โ€ŽREADME.md

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
| 08 | | [Baekjoon-10971 ์™ธํŒ์› ์ˆœํšŒ 2](./src/DFS/P10971) | |
2828
| 09 | | [Baekjoon-14500 ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ](./src/DFS/P14500) | |
2929
| 10 | | [Baekjoon-2667 ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ](./src/DFS/P2667) | |
30+
| 11 | | [Baekjoon-4963 ์„ฌ์˜ ๊ฐœ์ˆ˜](./src/DFS/P4963) | |
3031

3132
### BFS
3233

Diff for: โ€Žsrc/DFS/P4963/Main.java

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package DFS.P4963;
2+
3+
import java.io.BufferedReader;
4+
import java.io.FileInputStream;
5+
import java.io.InputStreamReader;
6+
import java.util.StringTokenizer;
7+
8+
public class Main {
9+
10+
static int w, h;
11+
static int[][] map;
12+
static boolean[][] visited;
13+
14+
static int[] di = {-1, 0, 1, 0, -1, 1, 1, -1};
15+
static int[] dj = {0, 1, 0, -1, 1, 1, -1, -1};
16+
17+
static int count;
18+
static boolean flag = false;
19+
20+
public static void main(String[] args) throws Exception {
21+
System.setIn(new FileInputStream("src/DFS/P4963/input.txt"));
22+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
23+
24+
while (true) {
25+
StringTokenizer st = new StringTokenizer(br.readLine());
26+
w = Integer.parseInt(st.nextToken());
27+
h = Integer.parseInt(st.nextToken());
28+
if (w == 0 && h == 0) return;
29+
30+
map = new int[h][w];
31+
visited = new boolean[h][w];
32+
count = 0;
33+
34+
for (int i = 0; i < h; i++) {
35+
st = new StringTokenizer(br.readLine());
36+
for (int j = 0; j < w; j++) {
37+
map[i][j] = Integer.parseInt(st.nextToken());
38+
}
39+
}
40+
41+
for (int i = 0; i < h; i++) {
42+
for (int j = 0; j < w; j++) {
43+
if (!visited[i][j]) {
44+
dfs(i, j);
45+
if (flag) {
46+
count ++;
47+
flag = false;
48+
}
49+
}
50+
}
51+
}
52+
53+
System.out.println(count);
54+
}
55+
}
56+
57+
static void dfs(int cur_i, int cur_j) {
58+
visited[cur_i][cur_j] = true;
59+
60+
if (map[cur_i][cur_j] == 1) {
61+
flag = true;
62+
63+
for (int t = 0; t < 8; t++) {
64+
int to_i = cur_i + di[t];
65+
int to_j = cur_j + dj[t];
66+
67+
if (isValidPath(to_i, to_j) && !visited[to_i][to_j]) {
68+
dfs(to_i, to_j);
69+
}
70+
}
71+
}
72+
}
73+
74+
static boolean isValidPath(int i, int j) {
75+
return 0 <= i && i < h && 0 <= j && j < w;
76+
}
77+
}

Diff for: โ€Žsrc/DFS/P4963/README.md

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
## [baekjoon-4963] ์„ฌ์˜ ๊ฐœ์ˆ˜
2+
3+
![image](https://user-images.githubusercontent.com/22045163/96835296-5cc85600-147e-11eb-9061-ff95a69e7a34.png)

Diff for: โ€Žsrc/DFS/P4963/input.txt

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
1 1
2+
0
3+
2 2
4+
0 1
5+
1 0
6+
3 2
7+
1 1 1
8+
1 1 1
9+
5 4
10+
1 0 1 0 0
11+
1 0 0 0 0
12+
1 0 1 0 1
13+
1 0 0 1 0
14+
5 4
15+
1 1 1 0 1
16+
1 0 1 0 1
17+
1 0 1 0 1
18+
1 0 1 1 1
19+
5 5
20+
1 0 1 0 1
21+
0 0 0 0 0
22+
1 0 1 0 1
23+
0 0 0 0 0
24+
1 0 1 0 1
25+
0 0

0 commit comments

Comments
ย (0)