사용 알고리즘: 백트래킹
사용 언어: java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main_bj_15654_n과m5 {
static int n, m;
static int[] numbers;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
numbers = new int[n];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
numbers[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(numbers);
//
boolean[] visited = new boolean[n];
int[] ans = new int[m];
nAndM5(0, visited, ans); //출력할 배열 크기, 현재 인덱스
}
private static void nAndM5(int size, boolean[] visited, int[] ans) {
if (size >= m) {
for (int answer : ans) {
System.out.print(answer + " ");
}
System.out.println();
return;
}
for (int i = 0; i < n; i++) {
if(!visited[i]) {
visited[i] = true;
ans[size] = numbers[i];
nAndM5(size + 1, visited, ans);
visited[i] = false;
ans[size] = 0;
}
}
}
}
진짜 오랜만에 풀어보는 n과m...
순서 맞춰서 출력해야 해서 ans라는 배열을 따로 만들어서 출력해야 한다.
'알고리즘 > 백준' 카테고리의 다른 글
7562_나이트의 이동 (0) | 2024.06.10 |
---|---|
1039_교환 (0) | 2024.06.05 |
6593_상범 빌딩 (0) | 2024.05.27 |
9095_1, 2, 3 더하기 (0) | 2024.05.24 |
2660_회장 뽑기 (0) | 2024.05.23 |