01-08 08:57
Recent Posts
Recent Comments
Tags
- python
- ict๊ณต๋ชจ์
- ํ์ด์๊ณต๋ชจ์
- ์๋์ด๋ ธ
- Spring
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- mysql
- ํ์ด์ฌ
- ์คํฝ์ค๋น
- DB
- ์ด๋ธ์
- ICT๋ฉํ ๋ง
- linux
- JOBํ๊ณ
- Java
- API MarketPlace ๊ธ๋ก๋ฒ ์ํฌํฐ์ฆ
- ์๋ฐ
- TSQL
- appetizer
- ํ๋ก๋ณด๋ ธ
- API๋ง์ผํ๋ ์ด์ค
- SQL
- Naver Cloud
- ์กํ๊ณ
- RaspberryPi
- ์จ์ผ๋ํ
- ํ์ด์
- ์คํฝ๋ ํ
- ICT
- DATABASE
- Today
- Total
miinsun
[BAEKJOON] ๋ฐฑ์ค DFS 1012 :: ์ ๊ธฐ๋ ๋ฐฐ์ถ ๋ณธ๋ฌธ
๐ฌ ๋ฌธ์ ์ค๋ช
์ฐจ์ธ๋ ์๋์ธ ํ๋๋ ๊ฐ์๋ ๊ณ ๋ญ์ง์์ ์ ๊ธฐ๋ ๋ฐฐ์ถ๋ฅผ ์ฌ๋ฐฐํ๊ธฐ๋ก ํ์๋ค. ๋์ฝ์ ์ฐ์ง ์๊ณ ๋ฐฐ์ถ๋ฅผ ์ฌ๋ฐฐํ๋ ค๋ฉด ๋ฐฐ์ถ๋ฅผ ํด์ถฉ์ผ๋ก๋ถํฐ ๋ณดํธํ๋ ๊ฒ์ด ์ค์ํ๊ธฐ ๋๋ฌธ์, ํ๋๋ ํด์ถฉ ๋ฐฉ์ง์ ํจ๊ณผ์ ์ธ ๋ฐฐ์ถํฐ์ง๋ ์ด๋ฅผ ๊ตฌ์ ํ๊ธฐ๋ก ๊ฒฐ์ฌํ๋ค.
์ด ์ง๋ ์ด๋ ๋ฐฐ์ถ๊ทผ์ฒ์ ์์ํ๋ฉฐ ํด์ถฉ์ ์ก์ ๋จน์์ผ๋ก์จ ๋ฐฐ์ถ๋ฅผ ๋ณดํธํ๋ค. ํนํ, ์ด๋ค ๋ฐฐ์ถ์ ๋ฐฐ์ถํฐ์ง๋ ์ด๊ฐ ํ ๋ง๋ฆฌ๋ผ๋ ์ด๊ณ ์์ผ๋ฉด ์ด ์ง๋ ์ด๋ ์ธ์ ํ ๋ค๋ฅธ ๋ฐฐ์ถ๋ก ์ด๋ํ ์ ์์ด, ๊ทธ ๋ฐฐ์ถ๋ค ์ญ์ ํด์ถฉ์ผ๋ก๋ถํฐ ๋ณดํธ๋ฐ์ ์ ์๋ค. ํ ๋ฐฐ์ถ์ ์ํ์ข์ฐ ๋ค ๋ฐฉํฅ์ ๋ค๋ฅธ ๋ฐฐ์ถ๊ฐ ์์นํ ๊ฒฝ์ฐ์ ์๋ก ์ธ์ ํด์๋ ๊ฒ์ด๋ค.
ํ๋๊ฐ ๋ฐฐ์ถ๋ฅผ ์ฌ๋ฐฐํ๋ ๋ ์ ๊ณ ๋ฅด์ง ๋ชปํด์ ๋ฐฐ์ถ๋ฅผ ๊ตฐ๋ฐ๊ตฐ๋ฐ ์ฌ์ด ๋์๋ค. ๋ฐฐ์ถ๋ค์ด ๋ชจ์ฌ์๋ ๊ณณ์๋ ๋ฐฐ์ถํฐ์ง๋ ์ด๊ฐ ํ ๋ง๋ฆฌ๋ง ์์ผ๋ฉด ๋๋ฏ๋ก ์๋ก ์ธ์ ํด์๋ ๋ฐฐ์ถ๋ค์ด ๋ช ๊ตฐ๋ฐ์ ํผ์ ธ์๋์ง ์กฐ์ฌํ๋ฉด ์ด ๋ช ๋ง๋ฆฌ์ ์ง๋ ์ด๊ฐ ํ์ํ์ง ์ ์ ์๋ค.
์๋ฅผ ๋ค์ด ๋ฐฐ์ถ๋ฐญ์ด ์๋์ ๊ฐ์ด ๊ตฌ์ฑ๋์ด ์์ผ๋ฉด ์ต์ 5๋ง๋ฆฌ์ ๋ฐฐ์ถํฐ์ง๋ ์ด๊ฐ ํ์ํ๋ค.
0์ ๋ฐฐ์ถ๊ฐ ์ฌ์ด์ ธ ์์ง ์์ ๋ ์ด๊ณ , 1์ ๋ฐฐ์ถ๊ฐ ์ฌ์ด์ ธ ์๋ ๋ ์ ๋ํ๋ธ๋ค.
๐จ ์ ์ถ๋ ฅ ์
์ ๋ ฅ
- ์ ๋ ฅ์ ์ฒซ ์ค์๋ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค.
- ๊ทธ ๋ค์ ์ค๋ถํฐ ๊ฐ๊ฐ์ ํ ์คํธ ์ผ์ด์ค์ ๋ํด ์ฒซ์งธ ์ค์๋ ๋ฐฐ์ถ๋ฅผ ์ฌ์ ๋ฐฐ์ถ๋ฐญ์ ๊ฐ๋ก๊ธธ์ด M(1 ≤ M ≤ 50)๊ณผ ์ธ๋ก๊ธธ์ด N(1 ≤ N ≤ 50), ๊ทธ๋ฆฌ๊ณ ๋ฐฐ์ถ๊ฐ ์ฌ์ด์ ธ ์๋ ์์น์ ๊ฐ์ K(1 ≤ K ≤ 2500)์ด ์ฃผ์ด์ง๋ค.
- ๊ทธ ๋ค์ K์ค์๋ ๋ฐฐ์ถ์ ์์น X(0 ≤ X ≤ M-1), Y(0 ≤ Y ≤ N-1)๊ฐ ์ฃผ์ด์ง๋ค. ๋ ๋ฐฐ์ถ์ ์์น๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ ์๋ค.
์ถ๋ ฅ
- ๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด ํ์ํ ์ต์์ ๋ฐฐ์ถํฐ์ง๋ ์ด ๋ง๋ฆฌ ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1)
2
10 8 17
0 0
1 0
1 1
4 2
4 3
4 5
2 4
3 4
7 4
8 4
9 4
7 5
8 5
9 5
7 6
8 6
9 6
10 10 1
5 5
์์ ์ถ๋ ฅ 1)
5
1
์์ ์ ๋ ฅ 2)
1
5 3 6
0 2
1 2
2 2
3 2
4 2
4 0
์์ ์ถ๋ ฅ 2)
2
โ
๐ป Main.java
- dfs์ bfs๋ฅผ ํตํด ํ์์๋ค. ์๋ ํ์ด๋ dfs๋ฅผ ์ด์ฉํด ํ์ดํ๋ค.
- ์ด์ฐจ์ ๋ฐฐ์ด field์ ํ์์ ์ธ ๋ฐฐ์ถ๋ฅผ -1๋ก ์ ๋ ฅ๋ฐ๋๋ค.
- ๋ฐฐ์ถ ๋ฐญ์ ํ์ํ๋ฉฐ ์์ง ํ์์ ์ธ ๋ฐฐ์ถ(-1)๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ๊ทธ ๋ฐฐ์ถ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊น์ด ์ฐ์ ํ์์ ์์ํ๋ค.
- ๊น์ด ์ฐ์ ํ์์ ์ํ์ข์ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก field๋ฅผ ๋ฒ์ด๋์ง ์๋๋ก ๋ฒ์๋ฅผ ์ค์ ํด์ค๋ค
- 0 <= X
- 0 <= Y
- X < M (๋ฐฐ์ถ ๋ฐญ์ ๊ฐ๋ก ๊ธธ์ด)
- Y < N (๋ฐฐ์ถ ๋ฐญ์ ์ธ๋ก ๊ธธ์ด)
/* ๋ฐฑ์ค DFS์ BFS - 1012 :: ์ ๊ธฐ๋ ๋ฐฐ์ถ */
import java.io.*;
import java.util.*;
public class Main {
static int[][] field;
static int M, N, K;
// ์ํ์ข์ฐ ์ขํ
static int[] dx = {0, 1, 0, -1};
static int[] dy = {-1, 0, 1, 0};
public static void dfs(int y, int x, int n) {
// ํ์ํ ๋ฐฐ์ถ๋ ์ง๋ ์ด์ ์๋ก ํ๊ธฐ
field[y][x] = n;
// ํ์ํ ๋ฐฐ์ถ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ค์ ์ํ์ข์ฐ์ ํ์์ ์ธ ๋ฐฐ์ถ๋ฅผ ์ฐพ์ ๊น์ด ํ์
for(int i = 0; i < 4; i++) {
int nY = y + dy[i];
int nX = x + dx[i];
if(0 <= nX && 0 <= nY && nX < M && nY < N)
if(field[nY][nX] == -1)
dfs(nY, nX, n);
}
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int i = 0; i < T; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
M = Integer.parseInt(st.nextToken()); // ๋ฐญ์ ๊ฐ๋ก๊ธธ์ด
N = Integer.parseInt(st.nextToken()); // ๋ฐญ์ ์ธ๋ก๊ธธ์ด
K = Integer.parseInt(st.nextToken()); // ๋ฐฐ์ถ๊ฐ ์ฌ์ด์ง ์์น
field = new int[N][M];
// ๋ฐฐ์ถ๋ฐญ ์ ๋ณด ์
๋ ฅ
for(int j = 0; j < K; j++) {
st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
// ์์ง ๊ฒ์ฌ ์ ์ธ ๋ฐฐ์ถ๋ฐญ์ -1๋ก ํํ
field[y][x] = -1;
}
int n = 0; // ๋ฐฐ์ถํฐ์ง๋ ์ด ์
// ๋ฐญ์ ํ์ํ๋ฉฐ ์์ง ๊ฒ์ฌ ์ ์ธ ๋ฐฐ์ถ๋ฐญ์์ ๊น์ดํ์์ ํด์ค
for(int j = 0; j < N; j++) {
for(int k = 0; k < M; k++) {
if(field[j][k] == -1) {
dfs(j, k, n++); // ํ์์ ํ ๋๋ง๋ค ์ง๋ ์ด์ ์๊ฐ ๋์ด๋จ
}
}
}
System.out.println(n);
}
br.close();
}
}
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BAEKJOON] ๋ฐฑ์ค ๋ค์ต์คํธ๋ผ 1753 :: ์ต๋จ ๊ฒฝ๋ก (0) | 2022.06.09 |
---|---|
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ฆฌ๋ 1700 :: ๋ฉํฐํญ ์ค์ผ์ค๋ง (0) | 2022.06.07 |
[BAEKJOON] ๋ฐฑ์ค DFS 2606 :: ๋ฐ์ด๋ฌ์ค (0) | 2022.04.23 |
[BAEKJOON] ๋ฐฑ์ค ๋์ ํฉ 16139 :: ์ธ๊ฐ-์ปดํจํฐ ์ํธ์์ฉ (0) | 2022.04.22 |
[BAEKJOON] ๋ฐฑ์ค ๋์ ํฉ 2559 :: ์์ด (0) | 2022.04.22 |
Comments