Tags
- ์ ๋ ฌ
- queue
- greedy
- Dynamic Programming
- ๊ต์ฌ
- Brute Force Algorithm
- LV2
- ๊น์ด ์ฐ์ ํ์
- CodingTest
- sort
- ๊ทธ๋ํ ํ์
- ์ํ
- ๊ตฌํ
- dfs
- ์๋ฎฌ๋ ์ด์
- BOJ
- Python
- SpringBoot
- Java
- Study
- BFS
- ๊ทธ๋ํ ์ด๋ก
- PGM
- ๋๋น ์ฐ์ ํ์
- DP
- ์ ์๋ก
- ๋ฐฑํธ๋ํน
- ๋ฌธ์์ด
- ์๋ฃ๊ตฌ์กฐ
- stack
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_4963 : ์ฌ์ ๊ฐ์ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- h x w ํฌ๊ธฐ์ ์ง๋๊ฐ ์ฃผ์ด์ง๋ค.
- 1์ ๋ , 0์ ๋ฐ๋ค์ด๋ค.
- ๋ ์ ์ฃผ๋ณ 8๋ฐฉํฅ์ผ๋ก ๊ฑด๋๋ค๋ ์ ์๋ค.
- ๊ฑด๋๋ค๋ ์ ์์ผ๋ฉด ๊ฐ์ ์ฌ์ด๋ค.
- ์ฌ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
- BFS๋ก ํ์ดํ ์ ์๋ค.
- ์ง๋์ ๋ชจ๋ ์นธ์ ์ํํ๋ฉฐ ํ์ธํ๋ค.
- ๋ ์ ๋ฐ๊ฒฌํ๋ฉด ์ธ์ ํ ๋ ๋ชจ๋๋ฅผ ์ฒดํฌํ๋ค.
- ์ฒดํฌํ ๋ ์ ๋ค์ ๋ฐ๊ฒฌํ์ง ์๋๋ค.
- ์ฒดํฌ ํ์๋ฅผ ์ถ๋ ฅํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] dx = {-1, -1, 0, 1, 1, 1, 0, -1}; //์ ์์ฐ ์ฐ ์ฐํ ํ ์ขํ ์ข ์ข์
int[] dy = {0, 1, 1, 1, 0, -1, -1, -1};
while (true) {
StringTokenizer st = new StringTokenizer(br.readLine());
int w = Integer.parseInt(st.nextToken());
int h = Integer.parseInt(st.nextToken());
if (w == 0 || h == 0) break;
int[][] map = new int[h][w];
for (int i = 0; i < h; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < w; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
}
}
// input done.
// BFS
int answer = 0;
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
if (map[i][j] == 1) {
// print(map);
answer++;
Queue<Pair> que = new ArrayDeque<>();
que.add(new Pair(i, j));
map[i][j] += answer;
while (!que.isEmpty()) {
Pair pair = que.poll();
for (int k = 0; k < 8; k++) {
int x = pair.x + dx[k];
int y = pair.y + dy[k];
if (0 <= x && x < h && 0 <= y && y < w && map[x][y] == 1) {
que.add(new Pair(x, y));
map[x][y] += answer;
}
}
}
}
}
}
System.out.println(answer);
}
}
private static class Pair {
int x, y;
public Pair(int x, int y) {
this.x = x;
this.y = y;
}
}
private static void print(int[][] map) {
System.out.println();
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[i].length; j++) {
System.out.print(map[i][j] + " ");
}
System.out.println();
}
System.out.println("================================");
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ์ง๋ ์ ๋ณด๋ฅผ 2์ฐจ์ ๋ฐฐ์ด map์ ์ ๋ ฅ๋ฐ๋๋ค.
- ์ง๋์ ๊ฐ ์นธ์ ์ํํ๋ฉฐ 1์ ์ฐพ๋๋ค.
- answer๋ฅผ +1 ํ๋ค.
- 1๋ถํฐ BFS๋ก ์ธ์ ํ ์นธ์ ์ฐพ์ answer๋ฅผ ๋ํ๋ค.
- answer๋ฅผ ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- BFS๋ก ๊ฐ๋จํ ํ์ด๋๋ค.
- ํ๊ทธ๋ฅผ ๋ณด๋ DFS๋ก ํ์ดํ ์ ์๋๋ฐ, ์๊ฐํด๋ณด๋ ์ต๋จ๊ฑฐ๋ฆฌ ์ฐพ๊ธฐ๊ฐ ์๋๋ฏ๋ก BFS๋ณด๋ค DFS๊ฐ ๋น ๋ฅผ ๊ฒ ๊ฐ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_3109 : ๋นต์ง (0) | 2023.02.22 |
---|---|
BOJ_6987 : ์๋์ปต (0) | 2023.02.21 |
BOJ_17281 : โพ (0) | 2023.02.20 |
BOJ_12865 : ํ๋ฒํ ๋ฐฐ๋ญ (0) | 2023.02.20 |
BOJ_14888 : ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (0) | 2023.02.20 |