본문 바로가기
Algorithm

DFS_leetcode numofisland

by forkballpitch 2021. 9. 23.
728x90
728x90

연결된 부분을 찾을 때 주로 DFS사용

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


public class Main
{



    public static void main(String args[])
    {

        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.next());
        int m = Integer.parseInt(sc.next());

        int[][] grid = new int[n][m];

        for(int i=0;i<n;i++)
        {
                for(int j=0;j<m;j++)
                {
                    
                        grid[i][j] = Integer.parseInt(sc.next());
        
                }
        }


        int ans = 0;

        for(int i =0; i < grid.length ; i++){
            for(int j = 0; j < grid[i].length; j++){
                if(grid[i][j] == 1){       
                    ans+=1;
                    callDFS(grid,i,j);
                }
            }
            
        }
        // while(!check())
        // {
                
        //         dfs(0, 0);

        //         for(int i=0;i<n;i++)
        //         {
        //                 for(int j=0;j<m;j++)
        //                 {
        //                         if(arr[i][j] == 1 && visited[i][j] >= 2) arr[i][j] = 0;
        //                 }
        //         }
        //         ans++;
        // }

        System.out.println(ans);


        
    }

    static public void callDFS(int[][] grid,int i,int j){

        if(i<0 || i>= grid.length || j<0 ||j>= grid[i].length || grid[i][j] == 0)
            return;

        grid[i][j] = 0;
        callDFS(grid,i+1,j);
        callDFS(grid,i-1,j);
        callDFS(grid,i,j-1);
        callDFS(grid,i,j+1);


    }


}
728x90
728x90

'Algorithm' 카테고리의 다른 글

DP_N*N 이동경로 최대값을 구하라(음수존재)  (0) 2021.11.07
BruteForce_백준 1120 문자열  (0) 2021.11.07
softeer 지도 자동 구축  (0) 2021.09.23
Bubble Sort  (0) 2017.09.26
insertion sort  (0) 2017.07.03