File tree Expand file tree Collapse file tree 2 files changed +60
-0
lines changed Expand file tree Collapse file tree 2 files changed +60
-0
lines changed Original file line number Diff line number Diff line change
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
+ // 강의
Original file line number Diff line number Diff line change
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
+
You can’t perform that action at this time.
0 commit comments