728x90
문제
접근 방식
11번 문제에 조건 하나만 더 추가된 문제로
다음 인덱스를 뽑을 때마다 이전 인덱스 이전의 값을 제외한
동일한 인덱스 부터의 값만 뽑을 수 있다.
재귀 호출 시 두 번째 인자로 넘겨주던 시작 인덱스 값을
현재 호출 스택에서 사용 중인 시작 인덱스를 넘겨주면 된다.
풀이
public class Main {
private static StringBuilder sb = new StringBuilder();
private static int n;
private static int m;
private static int[] arr;
private static int[] sequence;
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());
arr = new int[n];
sequence = new int[m];
st = new StringTokenizer(br.readLine(), " ");
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
createSequence(0, 0);
System.out.println(sb);
}
private static void createSequence(int size, int start) {
if (size == m) {
for (int seq : sequence) {
sb.append(seq).append(" ");
}
sb.append("\n");
return;
}
int before = 0;
for (int i = start; i < n; i++) {
if (before != arr[i]) {
sequence[size] = arr[i];
before = arr[i];
createSequence(size + 1, i);
}
}
}
}
'Java > Algorithms' 카테고리의 다른 글
[백준] 1182번 : 부분수열의 합 (0) | 2023.11.01 |
---|---|
[백준] 9663번 : N-Queen (1) | 2023.11.01 |
[백준] 15665번 : N과 M (11) (0) | 2023.10.30 |
[백준] 15664번 : N과 M (10) (0) | 2023.10.30 |
[백준] 15663번 : N과 M (9) (0) | 2023.10.30 |