2021년 10월 03일 일요일 16시
[백트래킹] 백준_9663_NQueen_백트래킹_골드5
https://www.acmicpc.net/problem/9663
import java.util.Scanner;
public class Main {
public static int[] arr;
public static int N;
public static int count = 0;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
N = in.nextInt();
arr = new int[N];
nQueen(0);
System.out.println(count);
}
public static void nQueen(int depth) {
// 모든 원소를 다 채운 상태면 count 증가 및 return
if (depth == N) {
count++;
return;
}
for (int i = 0; i < N; i++) {
arr[depth] = i;
// 놓을 수 있는 위치일 경우 재귀호출
if (Possibility(depth)) {
nQueen(depth + 1);
}
}
}
public static boolean Possibility(int col) {
for (int i = 0; i < col; i++) {
// 해당 열의 행과 i열의 행이 일치할경우 (같은 행에 존재할 경우)
if (arr[col] == arr[i]) {
return false;
}
/*
* 대각선상에 놓여있는 경우
* (열의 차와 행의 차가 같을 경우가 대각선에 놓여있는 경우다)
*/
else if (Math.abs(col - i) == Math.abs(arr[col] - arr[i])) {
return false;
}
}
return true;
}
}
<참고>
'알고리즘 > 백준' 카테고리의 다른 글
[DFSBFS] 백준_2606_바이러스_DFSBFS_실버4 (0) | 2021.10.14 |
---|---|
[DFSBFS] 백준_1260_DFSBFS_DFSBFS_실버2 (0) | 2021.10.14 |
[백트래킹] 백준_15649_N과M(1) _백트래킹_실버3 (0) | 2021.10.03 |
[재귀] 백준_11729_하노이탑_재귀_실버2 (0) | 2021.10.03 |
[재귀] 백준_10870_피보나치수 5_재귀_브론즈2 (0) | 2021.10.02 |