728x90
import java.util.*;
public class BJ15654 {
static int N, M;
static int[] Narr;
static boolean[] visited;
static List<Integer> sequence;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
M = sc.nextInt();
Narr = new int[N];
visited = new boolean[N];
sequence = new ArrayList<>();
// 입력받기
for (int i = 0; i < N; i++) {
Narr[i] = sc.nextInt();
}
// 배열 정렬
Arrays.sort(Narr);
// 백트래킹 시작
backtrack(0);
}
static void backtrack(int depth) {
if (depth == M) {
// 수열이 완성된 경우 출력
for (int num : sequence) {
System.out.print(num + " ");
}
System.out.println();
return;
}
for (int i = 0; i < N; i++) {
if (!visited[i]) {
visited[i] = true;
sequence.add(Narr[i]);
backtrack(depth + 1);
sequence.remove(sequence.size() - 1); // 되돌리기
visited[i] = false;
}
}
}
}
백트래킹의 전형적인 문제이다.
728x90
'백준' 카테고리의 다른 글
백준 1300 - Java (0) | 2024.11.19 |
---|---|
백준 15666 - Java (0) | 2024.11.18 |
백준 11054 - java (1) | 2024.11.15 |
백준 2110 - Java (0) | 2024.11.14 |
백준 11403 - Java (0) | 2024.11.13 |