BOJ 15657: N과 M (8) https://www.acmicpc.net/problem/15657
arr
을 오름차순으로 정렬한 뒤 dfs 함수를 실행한다.startIdx
와 depth
인자를 전달해 준다.import java.util.*;
import java.io.*;
public class Main {
static int N, M;
static int[] arr, printArr;
public static void main(String[] args) throws IOException{
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
M = sc.nextInt();
arr = new int[N];
printArr = new int[M];
for(int i=0; i<N; i++) {
arr[i] = sc.nextInt();
}
sc.close();
Arrays.sort(arr);
dfs(0, 0);
}
static void dfs(int startIdx, int depth) {
if(depth == M) {
for(int i=0; i<M; i++) {
System.out.print(printArr[i] + " ");
}
System.out.println();
return;
}
for(int i=startIdx; i<N; i++) {
printArr[depth] = arr[i];
dfs(i, depth + 1); // 자기 자신도 포함해야 하기 때문에 i를 넣어준다.
}
}
}
i
를 넣어준다.(i + 1
아님)