문제 링크 : https://www.acmicpc.net/problem/15654
import java.io.*;
import java.util.*;
public class P15654 {
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
static int N;
static int M;
static boolean[] visited;
static int[] result;
static int[] array;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
visited = new boolean[N];
result = new int[M];
array = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
// 사전순으로 출력해야 하기때문에 정렬
Arrays.sort(array);
dfs(0);
bw.flush();
bw.close();
br.close();
}
public static void dfs(int depth) throws IOException {
if (depth == M) {
StringBuilder sb = new StringBuilder();
for (int i : result) {
sb.append(i).append(" ");
}
bw.append(sb).append("\n");
return;
}
for (int i = 0; i < N; i++) {
// 중복조합이 아니라 visited 사용
if (!visited[i]) {
visited[i] = true;
result[depth] = array[i];
dfs(depth + 1);
visited[i] = false;
}
}
}
}
'백준' 카테고리의 다른 글
[Java] 백준 2133번 타일 채우기 - 그림 설명! 이해가 된다고 자부 (0) | 2024.05.19 |
---|---|
[Java] 백준 26902번 - IP-adresser (0) | 2024.04.23 |
[Java] 백준 14500번 - 테트로미노 (0) | 2024.04.23 |
[Java] 백준 1107번 - 리모컨 (0) | 2024.04.23 |
[Java] 백준 6588번 - 골드바흐의 추측 (0) | 2024.04.23 |