반응형
https://www.acmicpc.net/problem/1012
import java.io.*;
import java.util.*;
public class Main {
static int[][] arr;
static boolean[][] check;
static int N,M;
static int[] dx = {-1, 1, 0, 0 };
static int[] dy = { 0, 0, -1, 1 };
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T= Integer.parseInt(br.readLine()); //테스트 케이스
for(int t=0;t<T;t++) {
int cnt=0;
String[] str =br.readLine().split(" ");
M = Integer.parseInt(str[0]); //배추밭 가로길이
N = Integer.parseInt(str[1]); //배추밭 새로길이
int K = Integer.parseInt(str[2]); //배추 위치 개수
arr= new int[M][N];
check=new boolean [M][N];
for(int i =0;i<K;i++) {
str=br.readLine().split(" ");
int r=Integer.parseInt(str[0]);
int c=Integer.parseInt(str[1]);
arr[r][c]=1;
}
for(int i=0;i<M;i++) {
for(int j=0;j<N;j++) {
if(arr[i][j]==1&&!check[i][j]) {
dfs(i,j);
cnt++;
}
}
}
System.out.println(cnt);
}//테스트 케이스 for문
}// main()
static void dfs(int x, int y) {
check[x][y]=true;
for (int i = 0; i < 4; i++) { //상하좌우 좌표 조정
int cx = x + dx[i];
int cy = y + dy[i];
if (cx >= 0 && cy >= 0 && cx < M && cy < N) {
if (!check[cx][cy] && arr[cx][cy] == 1) {
dfs(cx, cy);
}
}
}
}//dfs()
}// class Main
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
백준 1912 : 연속합 _자바 Java (0) | 2023.01.21 |
---|---|
백준 11053 : 가장 긴 증가하는 수열 _자바 Java (0) | 2023.01.21 |
백준 1260 : DFS와 BFS _자바 Java (0) | 2023.01.20 |
백준 1004 : 어린 왕자 _자바 Java (0) | 2023.01.19 |
백준 9375 : 패션왕 신해빈 _자바 Java (2) | 2023.01.19 |
댓글