https://acmicpc.net/problem/15656
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static int n, m;
public static int[] a;
public static int[] arr;
// public static boolean[] visit;
public static StringBuilder sb = new StringBuilder();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
a = new int[n];
arr = new int[m];
// visit = new boolean[n];
for (int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
Arrays.sort(a);
dfs(0);
System.out.println(sb);
}
public static void dfs(int depth) {
if (depth == m) {
for (int val : arr) {
sb.append(val + " ");
}
sb.append('\n');
return;
}
for (int i = 0; i < n; i++) {
// if(!visit[i]) {
// visit[i] = true;
arr[depth] = a[i];
dfs(depth + 1);
// visit[i] = false;
// }
}
}
}
4 2 9 8 7 1
1 1
1 7
1 8
1 9
7 1
7 7
7 8
7 9
8 1
8 7
8 8
8 9
9 1
9 7
9 8
9 9
중복을 허용하는 입력받은 값으로 만드는 수열이다.
전에 풀었던 N과 M (6) 문제에서는 at을 통해서 arr[1]값은 이전에 들어온 값의 다음값부터 넣을 수 있도록 하였지만
이 문제는 그냥 다시 처음부터 넣어주면 되므로 visit도 필요없고 at도 필요없이 0부터 n까지 반복해서 재귀해주면 된다.
'코딩테스트 > JAVA' 카테고리의 다른 글
[백준 JAVA] 15663번: N과 M (9) - 중복 입력 값 순열 (0) | 2024.07.19 |
---|---|
[백준 JAVA] 15657번: N과 M (8) - 입력 값 중복 조합 (0) | 2024.07.19 |
[백준 JAVA] 15655번: N과 M (6) - 입력 값 조합 (0) | 2024.07.18 |
[백준 JAVA] 15654번: N과 M (5) - 입력 값 순열 (0) | 2024.07.18 |
[백준 JAVA] 15652번: N과 M (4) - 중복 조합 (0) | 2024.07.17 |