sm 기술 블로그
118. 15650(N과M (2)) 본문
import java.util.*;
public class Main {
static int[] arr;
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];
sc.close();
DFS(1, 0);
}
private static void DFS(int start, int depth) {
if (depth == M) {
for (int val : arr) {
System.out.printf(val + " ");
}
System.out.println();
return;
}
for (int i = start; i <= N; i++) {
arr[depth] = i;
DFS(i + 1, depth + 1);
}
}
}
문제요약
DFS를 이용하여 백트래킹을 해보아라.
설명
DFS와 백트래킹에 대한 개념은 아래를 참고하자.
https://smhope.tistory.com/309
https://smhope.tistory.com/307
이번 문제에서는 모든 경로를 탐색하는것이 아닌 현재 노드 기준으로 탐색 후 백트래킹은 진행하나, 이미 방문한 곳은 방문하지 않는다.
때문에 저번 문제에서 시작부분(start)만 추가해준다면 이미 방문한 곳은 방문하지 않게 된다.
'문제 > 백준_자바' 카테고리의 다른 글
120. 15650(N과M (4)) (0) | 2022.06.29 |
---|---|
119. 15650(N과M (3)) (0) | 2022.06.29 |
117. 15649( N과M(1) ) (0) | 2022.06.28 |
116. 2004(조합 0의 개수) (0) | 2022.06.27 |
115. 1676(팩토리얼 0의 개수) (0) | 2022.06.27 |
Comments