출처 : https://www.acmicpc.net/problem/9663
N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다.
N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.
첫째 줄에 N이 주어진다. (1 ≤ N < 15)
첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다.
8
92
import java.io.IOException;
import java.util.Scanner;
public class App {
public static int count = 0;
public static int arr[];
public static int N;
public static void main(String[] args) throws IOException{
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
arr = new int[N];
qeen(0);
System.out.println(count);
}
public static void qeen(int col){
if(col == N){
count++;
return;
}
for(int i = 0 ; i < N ; i++){
arr[col] = i;
if(posibility(col)){
qeen(col + 1);
}
}
}
public static boolean posibility(int col){
for(int i = 0 ; i < col ; i++){
if(arr[col] == arr[i]){
return false;
}
if(Math.abs(col - i) == Math.abs(arr[col] - arr[i])){
return false;
}
}
return true;
}
}