250420 N과 M (5)

Jongleee·2025년 4월 20일
0

TIL

목록 보기
874/970
public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int total = Integer.parseInt(st.nextToken());
        int selectCount = Integer.parseInt(st.nextToken());

        int[] numbers = new int[total];
        int[] selected = new int[selectCount];
        boolean[] visited = new boolean[total];

        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < total; i++) {
            numbers[i] = Integer.parseInt(st.nextToken());
        }
        Arrays.sort(numbers);

        StringBuilder sb = new StringBuilder();
        generatePermutations(numbers, visited, selected, 0, sb);
        System.out.print(sb);
    }

    private static void generatePermutations(int[] numbers, boolean[] visited, int[] selected, int depth,
            StringBuilder sb) {
        if (depth == selected.length) {
            for (int num : selected) {
                sb.append(num).append(' ');
            }
            sb.append('\n');
            return;
        }

        for (int i = 0; i < numbers.length; i++) {
            if (visited[i])
                continue;

            visited[i] = true;
            selected[depth] = numbers[i];
            generatePermutations(numbers, visited, selected, depth + 1, sb);
            visited[i] = false;
        }
    }

출처:https://www.acmicpc.net/problem/15654

0개의 댓글