728x90
https://www.acmicpc.net/problem/15649
15649번: N과 M (1)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
import java.io.*;
// N과 M (1)
public class _15649 {
public static boolean[] visit;
public static StringBuilder ans = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
int n = Integer.parseInt(input[0]);
int m = Integer.parseInt(input[1]);
visit = new boolean[n];
int[] arr = new int[m];
dfs(arr, n, m, 0);
System.out.println(ans);
}
public static void dfs(int[] arr, int n, int m, int depth) {
if (depth == m) {
for (int temp : arr) {
ans.append(temp + " ");
}
ans.append("\n");
return;
}
for (int i = 0; i < n; i++) {
if (!visit[i]) {
visit[i] = true;
arr[depth] = i + 1;
dfs(arr, n, m, depth + 1);
visit[i] = false;
}
}
}
}
MEMO
-- dfs의 특징과 문제의 조건이 너무 잘 맞는 문제
-- 자바의 편리함 덕분에 dfs를 구현할 때 c와 다른 무언가가 있을 것이라고 생각했지만 그렇지 않았음
!! 편리함만 추구하지 말고 문제해결에 집중하기 !!
728x90
728x90
'백준[baekjoon] > JAVA' 카테고리의 다른 글
백준(baekjoon) [JAVA] - 11724번: 연결 요소의 개수 (0) | 2023.08.20 |
---|---|
백준(baekjoon) [JAVA] - 1260번: DFS와 BFS (0) | 2023.08.19 |
백준(baekjoon) [JAVA] - 1476번: 날짜 계산 (0) | 2023.08.15 |
백준(baekjoon) [JAVA] - 11052번: 카드 구매하기 (0) | 2023.08.13 |
백준(baekjoon) [JAVA] - 3085번: 사탕 게임 (0) | 2023.08.10 |