코딩테스트/백준

백준 1012 : 유기농 배추 _자바 Java

플래시🦥 2023. 1. 20.
반응형

https://www.acmicpc.net/problem/1012

 

1012번: 유기농 배추

차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 

www.acmicpc.net


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
반응형

댓글