728x90
https://www.acmicpc.net/problem/15663
728x90
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
public class Main {
static int N;
static int M;
static int[] arr;
static int[] subArr;
static boolean[] check;
static List<List<Integer>> result = new ArrayList<>();
static Set<List<Integer>> resultSet = new HashSet<>();
private static void sub(int m) {
if(m == M) {
List<Integer> list = listOf(subArr);
if(!resultSet.contains(list)) {
result.add(list);
resultSet.add(list);
}
return;
}
for (int i = 0; i < N; i++) {
if(!check[i]) {
subArr[m] = arr[i];
check[i] = true;
sub(m + 1);
check[i] = false;
}
}
}
private static List<Integer> listOf(int[] subArr) { // 배열을 ArrayList로 변환하는 메소드
List<Integer> ret = new ArrayList<>();
for (int i : subArr) {
ret.add(i);
}
return ret;
}
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
arr = new int[N];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
subArr = new int[M];
check = new boolean[N];
sub(0);
for (int i = 0; i < result.size(); i++) {
for (int j = 0; j < M; j++) {
sb.append(result.get(i).get(j) + " ");
}
sb.append("\n");
}
System.out.println(sb);
}
}
728x90
'Problem Solving > BOJ' 카테고리의 다른 글
[백준, BOJ 20057] 마법사 상어와 토네이도 (java) (0) | 2023.05.03 |
---|---|
[백준, BOJ 15657] N과 M (8) (java) (0) | 2023.05.03 |
[백준, BOJ 15652] N과 M (4) (java) (0) | 2023.04.23 |
[백준, BOJ 20056] 마법사 상어와 파이어볼 (java) (1) | 2023.04.23 |
[백준, BOJ 19237] 어른 상어 (java) (1) | 2023.04.23 |