Hansel

백준_9663(DFS) 본문

알고리즘과 자료구조/BFS&DFS

백준_9663(DFS)

핑슬 2022. 2. 4. 19:40

 

import java.util.Scanner;

public class Main {
    static int n;
    static int[] board;
    static int result=0;

    public static boolean promising(int level){
        boolean flag = true;
        int prior = 1;

        while(prior<level && flag){
            if(board[level]==board[prior] ||
                    Math.abs(board[level]-board[prior])== Math.abs(level-prior))
                flag=false;
            prior++;
        }
        return flag;
    }

    public static void dfs(int level){
        if(promising(level)){
            if(level==n) result++;
            else{
                for(int i=1;i<=n;i++){
                    board[level+1]=i;
                    dfs(level+1);
                }
            }
        }
    }

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        n = kb.nextInt();
        board=new int[15];
        dfs(0);
        System.out.println(result);
    }
}

'알고리즘과 자료구조 > BFS&DFS' 카테고리의 다른 글

백준_14502(BFS)  (0) 2022.02.11
백준_14500(DFS)  (0) 2022.02.10
백준_1260(DFS&BFS)  (0) 2022.02.04
백준_7569(BFS)  (0) 2022.02.04
백준_2178(BFS)  (0) 2022.02.04