11import java .io .BufferedReader ;
2- import java .io .FileInputStream ;
32import java .io .InputStreamReader ;
4- import java .util .* ;
3+ import java .util .StringTokenizer ;
54
65public class Main {
7- private static int N ;
8- private static int M ;
6+ static BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
7+ static StringBuilder sb = new StringBuilder ();
8+ static StringTokenizer st ;
9+ static int n = 0 , m = 0 ;
10+ static boolean [] visited ;
911
1012 public static void main (String [] args ) throws Exception {
11- //System.setIn(new FileInputStream("input.txt")); // 제출 시 이 줄만 주석처리
12- BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
13- StringTokenizer st = new StringTokenizer (br .readLine ());
14- N = Integer .parseInt (st .nextToken ());
15- M = Integer .parseInt (st .nextToken ());
13+ st = new StringTokenizer (br .readLine ());
1614
17- //선택한 숫자들 표시
18- boolean [] visited = new boolean [ N ] ;
15+ n = Integer . parseInt ( st . nextToken ());
16+ m = Integer . parseInt ( st . nextToken ()) ;
1917
20- //현재 선택한 숫자 순서
21- List < Integer > temp = new ArrayList <>() ;
18+ int [] arr = new int [ m ];
19+ visited = new boolean [ n + 1 ] ;
2220
23- dfs (visited , temp , 0 );
21+
22+ dfs (0 , arr );
2423
2524
2625 }
2726
28- private static void dfs (boolean [] visited , List <Integer > temp , int count ) {
29- if (count == M ) {
30- print (temp );
27+ static void dfs (int idx , int [] arr ) {
28+ if (idx == m ) {
29+ for (int i : arr ) {
30+ System .out .print (i + " " );
31+ }
32+ System .out .println ();
3133 return ;
3234 }
3335
34- for (int i = 0 ; i < N ; i ++) {
35- if (visited [i ]) {
36- continue ;
37- }
38- //숫자 선택
39- visited [i ] = true ;
40- temp .add (i );
41-
42- dfs (visited , temp , count + 1 );
43-
44- visited [i ] = false ;
45- temp .remove (temp .size () - 1 );
36+ for (int i = 0 ; i < n ; i ++) {
37+ if (visited [i + 1 ]) continue ;
38+
39+ arr [idx ] = i + 1 ;
40+ visited [i + 1 ] = true ;
41+ dfs (idx + 1 , arr );
42+ visited [i + 1 ] = false ;
4643 }
4744
4845 }
4946
50- private static void print (List <Integer > temp ) {
51- StringBuilder sb = new StringBuilder ();
52- for (int i = 0 ; i < temp .size () - 1 ; i ++) {
53- sb .append (temp .get (i ) + 1 + " " );
54- }
55- sb .append (temp .get (temp .size () - 1 ) + 1 ).append ("\n " );
56-
57- System .out .print (sb .toString ());
5847
59- }
60- }
48+ }
0 commit comments