sm 기술 블로그
119. 15650(N과M (3)) 본문
import java.util.*;
import java.io.*;
public class Main {
static StringBuilder sb = new StringBuilder();
static int[] arr;
static int N, M;
public static void main(String[] args)throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] sBits = br.readLine().split(" ");
N = Integer.parseInt(sBits[0]);
M = Integer.parseInt(sBits[1]);
arr = new int[M];
DFS(0);
System.out.println(sb);
}
private static void DFS(int depth) {
if (depth == M) {
for (int val : arr) {
sb.append(val + " ");
}
sb.append("\n");
return;
}
for (int i = 1; i <= N; i++) {
arr[depth] = i;
DFS(depth + 1);
}
}
}
문제요약
DFS를 이용하여 백트래킹을 해보아라.
설명
DFS와 백트래킹에 대한 개념은 아래를 참고하자.
https://smhope.tistory.com/309
https://smhope.tistory.com/307
이번 문제는 모든 곳의 모든 경우의 수를 탐색한다.
때문에 조건 없이 1부터 재귀를 계속 돌려준다면, 크게 어렵지 않게 문제를 풀 수 있다.
단, 저번과 같이 바로 출력하고, Scanner를 사용한다면 시간초과가 발생할 수 있으므로 StringBuilder와 BufferedReader를 사용하자.
'문제 > 백준_자바' 카테고리의 다른 글
121. 9663(N-Queen) (0) | 2022.06.29 |
---|---|
120. 15650(N과M (4)) (0) | 2022.06.29 |
118. 15650(N과M (2)) (0) | 2022.06.29 |
117. 15649( N과M(1) ) (0) | 2022.06.28 |
116. 2004(조합 0의 개수) (0) | 2022.06.27 |
Comments