
소스코드:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
static BufferedReader br;
static BufferedWriter bw;
static int M, N;
static boolean[][] board;
static boolean[][] visited;
static int count;
private static void solve(int x, int y) {
if (visited[y][x] || !board[y][x]) {
return;
}
visited[y][x] = true;
solve(x + 1, y);
solve(x - 1, y);
solve(x, y + 1);
solve(x, y - 1);
}
public static void main(String[] args) throws IOException {
br = new BufferedReader(new InputStreamReader(System.in));
bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
String[] input = br.readLine().split(" ");
M = Integer.parseInt(input[0]);
N = Integer.parseInt(input[1]);
board = new boolean[N + 2][M + 2];
visited = new boolean[N + 2][M + 2];
count = 0;
int K = Integer.parseInt(input[2]);
for (int j = 0; j < K; j++) {
String[] pos = br.readLine().split(" ");
int x = Integer.parseInt(pos[0]);
int y = Integer.parseInt(pos[1]);
board[y + 1][x + 1] = true;
}
for (int y = 1; y < N + 1; y++) {
for (int x = 1; x < M + 1; x++) {
if (board[y][x] && !visited[y][x]) {
solve(x, y);
count++;
}
}
}
bw.write(count + "\n");
}
bw.close();
}
}
글의 내용 중 잘못된 점이나 수정이 필요한 부분, 혹은 궁금한 사항이 있다면 언제든 댓글로 남겨주시면 감사하겠습니다.
여러분의 피드백은 더 나은 글을 작성하는 데 큰 도움이 됩니다. 감사합니다.
'알고리즘 > 백준' 카테고리의 다른 글
| [JAVA-자바] 1541번: 잃어버린 괄호 (0) | 2025.03.13 |
|---|---|
| [JAVA-자바] 1260번: DFS와 BFS (0) | 2025.03.12 |
| [JAVA-자바] 11727번: 2×n 타일링 2 (0) | 2025.03.12 |
| [JAVA-자바] 11726번: 2×n 타일링 (0) | 2025.03.12 |
| [JAVA-자바] 9461번: 파도반 수열 (0) | 2025.03.12 |