ALGORITHM

[JAVA] 알고리즘 : DFS- 미로 탐색

연듀 2022. 9. 29. 18:06

import java.util.Scanner;

public class Main{
    static int[] dy = {0, 1, 0, -1};
    static int[] dx = {-1, 0, 1, 0};
    static int[][] board;
    static int answer=0;
    public void DFS(int x, int y){
        if(x==7 && y==7) answer++;// 종착점에 오면
        else{
            for(int i=0; i<4; i++){ // 네 방향으로 탐색 
                int nx = x+dx[i];
                int ny = y+dy[i];
                if(nx>=1 && nx<=7 && ny>=1 && ny<=7 && board[nx][ny]==0){ // 갈 수 있는 통로라면
                    board[nx][ny]=1; // 방문 체크
                    DFS(nx, ny);
                    board[nx][ny]=0; // 방문 해제
                }
            }
        }
    }
    public static void main(String[] args) {
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        board = new int[8][8];
        for(int i=1; i<=7; i++){
            for(int j=1; j<=7; j++){
                board[i][j]=kb.nextInt();
            }
        }
        board[1][1]=1; //첫 시작점 체크
        T.DFS(1,1);
        System.out.println(answer);
    }
}