[백준] 1012 유기농 배추(DFS) - 자바

 

1012번: 유기농 배추

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

www.acmicpc.net

import java.io.*;
import java.util.StringTokenizer;

public class Main {
    static boolean[][] field;   //밭
    static int X, Y;    //밭의 가로, 세로
    static int[] dirX = {-1, 1, 0, 0};
    static int[] dirY = {0, 0, -1, 1};

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int T = Integer.parseInt(br.readLine());

        while (T-- > 0) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            X = Integer.parseInt(st.nextToken());
            Y = Integer.parseInt(st.nextToken());
            int N = Integer.parseInt(st.nextToken());

            field = new boolean[X+2][Y+2];      //맨앞 칸과 맨뒷칸을 비워두고 dfs애서 if범위 검사를 생략할 수 있다.
            int count = 0; //배추흰지렁이 수 = 연결된 밭의 수

            //밭에 배추를 심는다.
            for (int i = 0; i < N; i++) {
                st = new StringTokenizer(br.readLine());
                int x = Integer.parseInt(st.nextToken()) + 1;
                int y = Integer.parseInt(st.nextToken()) + 1;
                field[x][y] = true;
            }

            //배추 밭 탐색
            for (int i = 1; i <= X; i++) {
                for (int j = 1; j <= Y; j++) {
                    if (field[i][j]) {
                        count++;
                        dfs(i, j);
                    }
                }
            }
            bw.write(count + "\n");
        }

        br.close();
        bw.close();
    }

    static void dfs(int y, int x) {
        field[y][x] = false;
        //상하좌우 탐색
        for(int i=0; i<4; i++){
            int newY = y + dirY[i];
            int newX = x + dirX[i];

            if(field[newY][newX])
                dfs(newY, newX);
        }
    }
}

'알고리즘' 카테고리의 다른 글

[백준] 1260 DFS와 BFS - 자바  (0) 2024.01.18
[백준] 1926 그림 (DFS) - 자바  (1) 2024.01.09
[백준] 2606 바이러스 (DFS) - 자바  (1) 2024.01.09
[Algorithm] 그리디 알고리즘  (0) 2023.08.22
[Algorithm] 탐색  (0) 2023.08.21