곽로그

[백준 9663, 자바] N-Queen 본문

알고리즘/백준

[백준 9663, 자바] N-Queen

일도이동 2020. 7. 28. 23:25
반응형
import java.io.*;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        String line = br.readLine();
        StringTokenizer st = new StringTokenizer(line,"\n");
        int N=Integer.parseInt(st.nextToken());


        NQ nq =new NQ(N);
        nq.countQueen(0);
        bw.write(String.valueOf(nq.count));
        bw.flush();






    }

}
class NQ{
    final int N ;
    int[] queens;
    int count=0;

    NQ(int N){
        this.N= N;
        queens=new int[N];

    }

    void countQueen(int row){
        if(row>=N){
            count++;
        }
        else{
            for(int column =0; column<N;column++){
                if(isValid(row, column)){
                    queens[row]=column;
                    countQueen(row+1);
                }
            }
        }
    }
    boolean isValid(int row, int column){
        for(int index=0;index<row;index++){
            if(queens[index]==column){
                return false;
            }
            else if(Math.abs(index-row)==Math.abs(queens[index]-column)) {
                return false;
            }
        }
        return true;
    }

    int getCount(){
        return count;
    }

}

 

br.write 는 String 출력

반응형
Comments