[Java] 백준 9663번 문제 (N-Queen)자료구조 & 알고리즘/BOJ2023. 8. 29. 06:25
Table of Contents
문제설명
소스코드
import java.util.Scanner;
class Main {
static boolean[] flag_a = null;
static boolean[] flag_b = null;
static boolean[] flag_c = null;
static int[] pos = null;
static void func(int N)
{
flag_a = new boolean[N];
flag_b = new boolean[2 * N + 1];
flag_c = new boolean[2 * N + 1];
pos = new int[N];
}
static int count = 0;
static void set(int i, int N)
{
for (int j = 0; j < N; j++)
{
if (flag_a[j] == false && flag_b[i + j] == false && flag_c[i - j + N - 1] == false)
{
pos[i] = j;
if (i == N-1) ++count;
else
{
flag_a[j] = flag_b[i + j] = flag_c[i - j + (N - 1)] = true;
set(i + 1, N);
flag_a[j] = flag_b[i + j] = flag_c[i - j + (N - 1)] = false;
}
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
func(N);
set(0, N);
System.out.print(count);
}
}
설명
2023.08.29 - [자료구조 & 알고리즘/알고리즘] - [Java] 8퀸 문제(분기한정법)
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[Java] 백준 1417번 문제 (국회의원 선거) (0) | 2023.10.01 |
---|---|
[Java] 백준 1026번 문제 (보물) (0) | 2023.09.21 |
[Java] 백준 1302번 문제 (베스트 셀러) (0) | 2023.08.13 |
[Java] 백준 1920번 문제 (수 찾기) (0) | 2023.08.13 |
[Java] 백준 11728번 문제 (배열 합치기) (0) | 2023.08.12 |