코드와이
[BAEKJOON] 9663. N-Queen 본문
백트래킹
문제링크
9663번: N-Queen
N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.
www.acmicpc.net
package acmicpc.Gold5;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class N_queen {
static int n, ans;
static int[] col;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
ans = 0;
col = new int[n+1];
setQueen(1);
System.out.println(ans);
}
private static void setQueen(int cnt) {
if( cnt > n ) {
ans++;
return;
}
for(int i = 1 ; i <= n ; i++) {
col[cnt] = i;
if(check(cnt)) {
setQueen(cnt+1);
}
}
}
private static boolean check(int cnt) {
for(int i = 1 ; i < cnt ; i++) {
if(col[cnt] == col[i] || Math.abs(i - cnt) == Math.abs(col[cnt] - col[i])) return false;
}
return true;
}
}
'acmicpc' 카테고리의 다른 글
[BAEKJOON] 2252. 줄 세우기 (0) | 2021.04.05 |
---|---|
[BAEKJOON] 14888. 연산자 끼워넣기 (0) | 2021.04.04 |
[BAEKJOON] 1759. 암호 만들기 (0) | 2021.04.04 |
[BAEKJOON] 1932. 정수 삼각형 (0) | 2021.03.27 |
[BAEKJOON] 17472. 다리 만들기2 (0) | 2021.03.26 |