본문 바로가기

코딩테스트(백준)

[백준] 1012 : 유기농 배추 - JAVA(자바) - 사좋배 공유

import java.util.Scanner;
public class Main {

	static int dx[]= {-1,0,1,0};
	static int dy[]= {0,1,0,-1};
	static int sero;
	static int garo;
	static int arr[][];
	static boolean visit[][];
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int test_case= sc.nextInt();
		for(int t=0;t<test_case;t++) {
			garo = sc.nextInt();
			sero = sc.nextInt();
			int score = sc.nextInt();
			int result=0;
			arr= new int[sero][garo];
			visit=new boolean[sero][garo];
			for(int i=0;i<score;i++) {
				int garoy= sc.nextInt();
				int serox= sc.nextInt();
				arr[serox][garoy]=1;
			}
			
			for(int i=0;i<sero;i++) {
				for(int j=0;j<garo;j++) {
					if(arr[i][j]==1) {
						result++;
						DFS(i,j);
					}
				}
			}
			//출력
			System.out.println(result);
		}
	}

	private static void DFS(int x, int y) {
		//종료조건
		
		for(int i=0;i<4;i++) {
			int rx= x+dx[i];
			int ry = y+dy[i];
			if(rx<0||ry<0||rx>=sero||ry>=garo) {
				continue;
			}if(arr[rx][ry]==1&&visit[rx][ry]==false) {
				visit[rx][ry]=true;
				arr[rx][ry]=0;
				DFS(rx,ry);
			}
		}
		return;
	}

}