import java.util.*;
public class Main
{
static int cnt, N;
static int[] arr;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
N = input.nextInt();
arr = new int[N];
nQueen(0);
System.out.println(cnt);
}
private static void nQueen(int next){
if(next == N) {
cnt++;
return;
}
for(int i = 0; i < N; i++){
arr[next] = i;
if(Possibility(next)){
nQueen(next + 1);
}
}
}
private static boolean Possibility(int col){
// 이전 열과 같은 행일 때
for(int i = 0; i < col; i++){
if(arr[col] == arr[i]) {
return false;
}
// 이전 열의 대각선에 포함 될 때
else if(Math.abs(col - i) == Math.abs(arr[col] - arr[i])) {
return false;
}
}
return true;
}
}
배열을 2차원이 아닌 1차열로 만들었다
index => 열
value => 행
'알고리즘' 카테고리의 다른 글
<백준> 14889번 자바 알고리즘 (0) | 2022.01.03 |
---|---|
<백준> 14888번 자바 알고리즘 (0) | 2022.01.02 |
<백준> 15652번 자바 알고리즘 (0) | 2021.12.31 |
<백준> 15651번 자바 알고리즘 (0) | 2021.12.31 |
<백준> 15650번 자바 알고리즘 (0) | 2021.12.30 |