DFS, BFS 문제(icote)

문제: 음료수 얼리기


자바 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class DFS {
  public static int N,M;
  public static int()() graph;

  public void run() {
    try {
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
      StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine(), " ");
      N = Integer.parseInt(stringTokenizer.nextToken());
      M = Integer.parseInt(stringTokenizer.nextToken());

      graph = new int(N)(M);

      for(int i =0; i<N; i++){
        String str = bufferedReader.readLine();
        for(int j=0; j<M; j++){
          graph(i)(j) = str.charAt(j)-'0';
        }
      }
    } catch (IOException e) {
      e.printStackTrace();
      System.out.println(e.getMessage());

    }

    int result = 0;
    for(int i=0;i<N; i++) {
      for(int j=0; j<M; j++){
        if(dfs(i,j))
          result+=1;
      }
    }

  }

  public boolean dfs(int x, int y){
    if(x<0 || x>=N || y<0 || y>=M){
      return false;
    }
    if(graph(x)(y) == 0){
      graph(x)(y) = 1;
      dfs(x - 1, y);
      dfs(x + 1, y);
      dfs(x, y - 1);
      dfs(x, y + 1);
      return true;
    }
    return false;
  }
}