Algorithm 문제풀이

백준 N과M(3)

cjsong 2019. 3. 17. 20:22
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main{
private static int[] arr;
private static StringBuilder sb;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
sb = new StringBuilder();
arr = new int[N];
int[] a = new int[N]; // 인덱스를 관리하는 배열
for (int i = 0; i < N; i++) {
arr[i] = i + 1;
}
int depth = 0;
backtrack(a, depth ,M);
System.out.println(sb);
}
public static void backtrack(int[] a, int depth, int M) {
if(depth == M ) {
for (int j = 0; j < M; j++) {
sb.append(arr[a[j]]).append(" ");
}
sb.append("\n");
return;
}
for (int i = 0; i < a.length; i++) {
a[depth] = i;
backtrack(a, depth+1, M);
}
}
}