N과 M 2번 문제이다.
오름차순으로 정렬해야 하는 조건이 추가 되었다.
idx를 추가해서 해결했는데 오히려 1번보다 간단하다고 느꼈다.
최종 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int[] arr;
static int n, m;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
arr = new int[m];
dfs(1, 0);
System.out.println(sb);
}
public static void dfs(int idx, int depth) {
if(depth == m) {
for (int v : arr) {
sb.append(v).append(" ");
}
sb.append('\n');
return;
}
// idx를 증가시키면서 idx부터 재귀 호출
for (int i = idx; i <= n; i++) {
arr[depth] = i;
dfs(i + 1, depth + 1);
}
}
}
'코딩 테스트' 카테고리의 다른 글
(Java) 백준 1012 - 유기농 배추 (DFS) (0) | 2022.05.22 |
---|---|
(Java) 백준 1260 - DFS와 BFS (0) | 2022.05.22 |
(Java) 백준 15649 - N과 M (1) (0) | 2022.05.16 |
(Java) 백준 2579 - 계단 오르기 (0) | 2022.05.13 |
(Java) 백준 2606 - 바이러스 (0) | 2022.05.11 |