SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
2024.02.23 - [Java/백준] - [JAVA] 백준 9663 N-Queen
[JAVA] 백준 9663 N-Queen
9663번: N-Queen (acmicpc.net) 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시
juju-study.tistory.com
정답
import java.util.*;
class Solution
{
static boolean[] flag_a; //각 행에 배치했는지 체크
static boolean[] flag_b; // / 대각선 방향에 퀸을 배치했는지 체크
static boolean[] flag_c; // \ 대각선 방향에 퀸을 배치했는지 체크
static int[] pos; //각 열에 있는 퀸의 위치
static int answer;
static int N; //퀸 N개를 서로 공격할 수 없게 놓는 경우의 수
//i열에 알맞은 위치에 퀸을 배치
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) // 수정된 부분: flag_a[j]로 변경
{
pos[i]=j;
if(i==n-1)
answer++;
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[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for(int tc = 1; tc <= T; tc++)
{
N = sc.nextInt();
flag_a = new boolean[N];
flag_b = new boolean[2*N-1];
flag_c = new boolean[2*N-1];
pos = new int[N];
answer = 0;
set(0,N);
System.out.printf("#%d %d\n",tc,answer);
}
}
}
'Java > SWEA' 카테고리의 다른 글
[JAVA] SWEA 1289. 원재의 메모리 복구하기 (0) | 2024.05.18 |
---|---|
[JAVA] SWEA 5212. 햄버거 다이어트 (0) | 2024.05.18 |
[JAVA] SWEA 1208. [S/W 문제해결 기본] 1일차 - Flatten (0) | 2024.05.17 |
[JAVA] SWEA 1206. [S/W 문제해결 기본] 1일차 - View (1) | 2024.05.12 |
[JAVA] SWEA 1213. [S/W 문제해결 기본] 3일차 - String (0) | 2024.05.11 |