https://www.acmicpc.net/problem/15650
DFS 탐색 기법을 활용한 백트래킹 문제이다.
오름차순으로 출력하는 조건에 의해 depth 변수 뿐만 아니라 at 변수도 필요하다.
import java.util.Scanner;
public class BOJ_1_15650 {
public static int[] arr;
public static int N, M;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
M = sc.nextInt();
arr = new int[M];
dfs(1, 0);
}
public static void dfs(int at, int depth) {
if (depth == M) {
for (int val : arr) {
System.out.print(val + " ");
}
System.out.println();
return;
}
for (int i = at; i <= N; i++) {
arr[depth] = i;
dfs(i + 1, depth + 1);
}
}
}
dfs 개념이나 활용에 대해 아직 미숙한 것 같다.
N과 M (1)을 먼저 풀고나니 상대적으로 쉽게 풀었다.