์ฝ”๋”ฉํ…Œ์ŠคํŠธ

[์ธํ”„๋Ÿฐ/DFS/์„ฌ๋‚˜๋ผ ์•„์ผ๋žœ๋“œ]

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2024. 9. 1. 12:07

<<ํ’€์ด>>

import java.util.Scanner;

class Main {
    static  int answer = 0, n;
    static int[] dx = {-1, -1, 0, 1, 1, 1, 0, -1};
    static int[] dy = {0, 1, 1, 1, 0, -1 ,-1, -1};

    public void DFS(int x, int y, int[][] board) {
        for (int i = 0; i < 8; i++) {
            int nx = x + dx[i];
            int ny = y + dy[i];

            if(nx >= 0 && nx < n && ny >=0 && ny < n && board[nx][ny] == 1) {
                board[nx][ny] = 0;
                DFS(nx, ny, board);
            }
        }
    }

   public void solution(int[][] board) {
       for (int i = 0; i < n; i++) {
           for (int j = 0; j < n; j++) {
               if(board[i][j] == 1) {
                   answer++;
                   board[i][j] = 0;
                   DFS(i, j, board);
               }
           }
       }
    }



    public static void main(String[] args) {
        Main T = new Main();
        Scanner in = new Scanner(System.in);

        n = in.nextInt();
        int[][] arr = new int[n][n];

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                arr[i][j] = in.nextInt();
            }

        }
        T.solution(arr);
        System.out.println(answer);

    }
}

 

์ด ๋ฌธ์ œ๋Š” DFS ๋ฌธ์ œ ์ค‘์—์„œ๋„ ์‰ฌ์šด ๋ฌธ์ œ์— ์†ํ•œ๋‹ค.

 

์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ DFS์ด๋‹ค.

 

์™ธ๋ถ€์— ์ฐธ์กฐํ•ด์„œ ๋“ค์–ด์˜ค๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด board ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์‹ค์ œ board ๊ฐ’๋„ ๋ณ€๊ฒฝ์ด ๋œ๋‹ค. (์ฐธ์กฐํ•˜๋Š” ๊ฑฐ๋Š” ๊ทธ๋Œ€๋กœ์ด๋‹ค. ๋ณ€์ˆ˜๋งŒ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ๊ธฐ๋Š” ๊ฒƒ์ด๋‹ค.)

 

๋‚˜๋Š” ๋ณต์‚ฌ ๋ณธ ๋ฐฐ์—ด (๋ชจ๋‘ 0์œผ๋กœ ๋œ)์„ ๋งŒ๋“ค์–ด์„œ 1์ด ์žˆ์œผ๋ฉด 1๋กœ ๋ณ€๊ฒฝ์„ ์‹œํ‚ค๊ณ , ๋‹ค์Œ ๊ณผ์ •์—์„œ ๊ธฐ์กด ๋ฐฐ์—ด์€ 1์ธ๋ฐ ๋ณต์‚ฌ๋ณธ๋„ 1์ด๋ฉด ๋„˜์–ด๊ฐ€๊ณ  ๊ธฐ์กด ๋ฐฐ์—ด์€ 1์ด๊ณ  ๋ณต์‚ฌ๋ณธ์€ 0์ด๋ฉด answer++ ํ•ด์„œ ๋‹ต์„ ๊ตฌํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์ƒ๊ฐํ–ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ๊ฐ•์‚ฌ๋‹˜์€ ๊ธฐ์กด ๋ฐฐ์—ด board ๊ฐ’์„ 0์œผ๋กœ ๋ณ€๊ฒฝ์„ ์‹œ์ผœ๊ฐ€๋ฉฐ answer++ ํ•ด์คฌ๋‹ค. 

 

๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” ๊ฐ•์‚ฌ๋‹˜์˜ ํ’€์ด ๋ฐฉ์‹์ด ํ›จ์”ฌ ๋ฆฌ์†Œ์Šค ๋“ฑ ์—ฌ๋Ÿฌ๋ถ€๋ถ„์—์„œ ํšจ์œจ์ ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์˜ค๋Š˜๋„ ์ข‹์€ ๊ฑธ ๋ฐฐ์› ๋‹ค.

 



์˜ค๋žœ๋งŒ์— ํ’€์–ด๋ณด๋‹ˆ ๋‡Œ๊ฐ€ ์˜ค๋žœ๋งŒ์— ์ž๊ทน์ด ์˜จ๊ฒƒ ๋งˆ๋ƒฅ ใ…‹ใ…‹ ๊ฐœ์šด ํ–ˆ๋‹ค ใ…‹ใ…‹ ๊ทธ๋ž˜๋„ ์–ด๋–ป๊ฒŒ ํ• ์ง€ ๋ฐฉํ–ฅ์„ฑ ์ฝ”๋“œ ์งœ๋Š” ํ˜•์‹์€ ๊ธฐ์–ต์ด ์ž˜ ๋‚˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค

 

๊พธ์ค€ํžˆ ๋งค์ฃผ 1-2๊ฐœ์”ฉ ํ’€์–ด๋‚˜๊ฐ€๋ฉด์„œ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ดํ•ด๋„๋ฅผ ๋”์šฑ ๊ฐ•ํ™” ์‹œ์ผœ๋‚˜๊ฐ€์ž