๋ฐ์ํ
https://www.acmicpc.net/problem/1012
์ฝ๋
import java.util.Scanner;
public class Main {
static int map[][];
static boolean visit[][];
static int M, N, K; // ๊ฐ๋ก, ์ธ๋ก, ๋ฐฐ์ถ ๊ฐฏ์
static int X, Y; // ๋ฐฐ์ถ์ ์์น
static int dx[] = {0, -1, 0, 1}; // ์ํ์ข์ฐ
static int dy[] = {-1, 0, 1, 0}; // ์ํ์ข์ฐ
static int count; // ์ต์ ํ์ํ ๋ฐฐ์ถํฐ์ง๋ ์ด ๋ง๋ฆฌ ์
public static void dfs(int y, int x) {
visit[y][x] = true;
for(int i=0; i<4; i++) {
int nx = x + dx[i];
int ny = y + dy[i];
// nx, ny = ์ขํ์ ๋ฒ์, M*N ํฌ๊ธฐ์ด๋ฏ๋ก x, y์ขํ๊ฐ 0๋ณด๋จ ์ปค์ผํ๊ณ M, N๋ณด๋จ ์์์ผํจ.
if(nx>=0 && ny>=0 && nx<M && ny<N) {
if(map[ny][nx] == 1 && !visit[ny][nx]) {
dfs(ny, nx);
}
}
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
for(int i=0; i<T; i++) {
M = scan.nextInt(); // ๊ฐ๋ก
N = scan.nextInt(); // ์ธ๋ก
K = scan.nextInt(); // ๋ฐฐ์ถ ๊ฐฏ์
map = new int[N][M];
visit = new boolean[N][M];
count = 0;
for(int j=0; j<K; j++) {
int a = scan.nextInt(); // ๊ฐ๋ก
int b = scan.nextInt(); // ์ธ๋ก
map[b][a] = 1;
}
for(int j=0; j<N; j++) {
for(int k=0; k<M; k++) {
if(map[j][k] == 1 && visit[j][k] == false) {
dfs(j, k);
count ++;
}
}
}
System.out.println(count);
}
scan.close();
}
}
ํ์ด
๋ฐฑ์ค 2667๋ฒ - ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ
์ ๋ฌธ์ ์ ๋ ผ๋ฆฌ๊ฐ ๋๊ฐ์ ๋ฌธ์ ์ด๋ค.
๋ฐ์ํ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 3040๋ฒ: ๋ฐฑ์ค ๊ณต์ฃผ์ ์ผ๊ณฑ ๋์์ด (0) | 2020.02.07 |
---|---|
[๋ฐฑ์ค] 2161๋ฒ: ์นด๋1(์๋ฎฌ๋ ์ด์ ) (0) | 2020.02.07 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ๊ธฐ์ง๊ตญ ์ค์น(๊ทธ๋ฆฌ๋) (0) | 2020.02.07 |
[๋ฐฑ์ค] 11586๋ฒ: ์ง์ ๊ณต์ฃผ๋์ ๋ง๋ฒ ๊ฑฐ์ธ(๋ฌธ์์ด) (0) | 2020.02.06 |
[๋ฐฑ์ค] 11724๋ฒ: ์ฐ๊ฒฐ ์์์ ๊ฐ์(dfs, bfs) (0) | 2020.02.06 |
๋๊ธ