https://www.acmicpc.net/problem/9663
9663번: N-Queen
N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.
www.acmicpc.net
📌 작성한 코드
// 9663
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "Beakjoon/Gold/test.txt";
let input = fs.readFileSync(filePath).toString().trim();
const N = Number(input);
let visited1 = new Array(N).fill(false);
let visited2 = new Array(2 * N).fill(false);
let visited3 = new Array(2 * N).fill(false);
let answer = 0;
const backTracking = (cur) => {
// 행 선택 - x
if (cur === N) {
answer++;
return;
}
for (let i = 0; i < N; i++) {
// 열 선택 - y
if (visited1[i] || visited2[i + cur] || visited3[cur - i + N - 1]) continue;
visited1[i] = true;
visited2[i + cur] = true;
visited3[cur - i + N - 1] = true;
backTracking(cur + 1);
visited1[i] = false;
visited2[i + cur] = false;
visited3[cur - i + N - 1] = false;
}
};
backTracking(0);
console.log(answer);
📌 풀이
바킹독님의 백트래킹 설명글을 보고오면 N-Queen 문제에 대해 더 잘 이해할 수 있을 것이다.

✅ 성공

'알고리즘 > 백준' 카테고리의 다른 글
| [JavaScript] 백준 골드 5 : 15686 - 치킨 배달 (1) | 2024.02.09 |
|---|---|
| [JavaScript/백트래킹] 백준 실버 1 : 14889 - 스타트와 링크 (2) | 2024.02.08 |
| [JavaScript/백트래킹] 백준 실버 2 : 1182 - 부분수열의 합 (0) | 2024.02.08 |
| [JavaScript/백트래킹] 백준 골드 5 : 16987 - 계란으로 계란치기 (1) | 2024.02.08 |
| [JavaScript/백트래킹] 백준 골드 5 : 1759 - 암호 만들기 (1) | 2024.02.04 |