File tree Expand file tree Collapse file tree 2 files changed +63
-0
lines changed Expand file tree Collapse file tree 2 files changed +63
-0
lines changed Original file line number Diff line number Diff line change
1
+ # [ Silver III] 모든 순열 - 10974
2
+
3
+ [ 문제 링크] ( https://www.acmicpc.net/problem/10974 )
4
+
5
+ ### 성능 요약
6
+
7
+ 메모리: 39836 KB, 시간: 296 ms
8
+
9
+ ### 분류
10
+
11
+ 백트래킹, 브루트포스 알고리즘
12
+
13
+ ### 제출 일자
14
+
15
+ 2025년 1월 30일 17:20:37
16
+
17
+ ### 문제 설명
18
+
19
+ <p >N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.</p >
20
+
21
+ ### 입력
22
+
23
+ <p >첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다. </p >
24
+
25
+ ### 출력
26
+
27
+ <p >첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다.</p >
28
+
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 arr = [ ] ;
6
+
7
+ for ( let i = 1 ; i <= N ; i ++ ) {
8
+ arr . push ( i ) ;
9
+ }
10
+
11
+ let visited = new Array ( N ) . fill ( false ) ;
12
+ let selected = [ ] ;
13
+
14
+ let answer = '' ;
15
+
16
+ const dfs = ( arr , depth ) => {
17
+ if ( depth == N ) {
18
+ let result = [ ] ;
19
+ for ( let i of selected ) result . push ( arr [ i ] ) ;
20
+ for ( let x of result ) answer += x + ' ' ;
21
+ answer += '\n' ;
22
+ return ;
23
+ }
24
+ for ( let i = 0 ; i < arr . length ; i ++ ) {
25
+ if ( visited [ i ] ) continue ;
26
+ selected . push ( i ) ;
27
+ visited [ i ] = true ;
28
+ dfs ( arr , depth + 1 ) ;
29
+ selected . pop ( ) ;
30
+ visited [ i ] = false ;
31
+ }
32
+ } ;
33
+
34
+ dfs ( arr , 0 ) ;
35
+ console . log ( answer ) ;
You can’t perform that action at this time.
0 commit comments