728x90
https://www.acmicpc.net/problem/15665
메모리: 34,648 KB , 시간: 356 ms
사용 알고리즘: 백트래킹, 자료 구조
728x90
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
static int N, M;
static List<Integer> list;
static int[] arr;
static StringBuilder answer;
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
// 입력 받은 자연수 중복 제거
Set<Integer> set = new HashSet<>();
st = new StringTokenizer(br.readLine());
for(int i = 0; i < N; i++) {
set.add(Integer.parseInt(st.nextToken()));
}
// 중복 제거한 자연수 리스트로 변환 후 정렬
list = new ArrayList<>(set);
Collections.sort(list);
arr = new int[M];
answer = new StringBuilder();
// 백트래킹으로 조합 찾기
backTracking(0);
System.out.print(answer);
}
private static void backTracking(int idx) {
if(idx == M) {
for(int a : arr) answer.append(a).append(" ");
answer.append("\n");
return;
}
for(int i = 0; i < list.size(); i++) {
arr[idx] = list.get(i);
backTracking(idx + 1);
}
}
}
728x90
'Problem Solving > BOJ' 카테고리의 다른 글
[백준, BOJ 15664] N과 M (10) (java) (0) | 2025.01.21 |
---|---|
[백준, BOJ 1024] 수열의 합 (java) (0) | 2025.01.21 |
[백준, BOJ 1475] 방 번호 (java) (0) | 2025.01.19 |
[백준, BOJ 15651] N과 M (3) (java) (0) | 2025.01.19 |
[백준, BOJ 10610] 30 (java) (0) | 2025.01.07 |