Skip to content

Commit 0368d3a

Browse files
committed
[Gold IV] Title: N-Queen, Time: 21256 ms, Memory: 14996 KB -BaekjoonHub
1 parent 0a6f3c4 commit 0368d3a

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
let fs = require('fs');
2+
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
3+
4+
let n = Number(input[0]);
5+
let queens = [];
6+
7+
// 해당 위치에 퀸을 놓을 수 있는지 확인
8+
function possible(x, y) {
9+
for (let [a, b] of queens) {
10+
if (a == x || b == y) return false;
11+
if (Math.abs(a - x) == Math.abs(b - y)) return false;
12+
}
13+
return true;
14+
}
15+
16+
let cnt = 0;
17+
function dfs(row) {
18+
if (row == n) cnt += 1; // 퀸을 N개 배치 가능한 경우 카운트
19+
// 현재 행에 존재하는 열을 하나씩 확인
20+
for (let i = 0; i < n; i++) {
21+
if (!possible(row, i)) continue; // 현재 위치에 놓을 수 없다면 continue
22+
queens.push([row, i]);
23+
dfs(row + 1);
24+
queens.pop(); // 현재 위치에서 퀸 제거
25+
}
26+
}
27+
dfs(0);
28+
console.log(cnt);
29+
30+
// 강의
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# [Gold IV] N-Queen - 9663
2+
3+
[문제 링크](https://www.acmicpc.net/problem/9663)
4+
5+
### 성능 요약
6+
7+
메모리: 14996 KB, 시간: 21256 ms
8+
9+
### 분류
10+
11+
백트래킹, 브루트포스 알고리즘
12+
13+
### 제출 일자
14+
15+
2025년 1월 30일 12:14:36
16+
17+
### 문제 설명
18+
19+
<p>N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다.</p>
20+
21+
<p>N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.</p>
22+
23+
### 입력
24+
25+
<p>첫째 줄에 N이 주어진다. (1 ≤ N < 15)</p>
26+
27+
### 출력
28+
29+
<p>첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다.</p>
30+

0 commit comments

Comments
 (0)