백준

백준 15654 - Java

으엉어엉 2024. 11. 17. 11:38
728x90

import java.util.*;

public class BJ15654 {

    static int N, M;
    static int[] Narr;
    static boolean[] visited;
    static List<Integer> sequence;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        N = sc.nextInt();
        M = sc.nextInt();
        Narr = new int[N];
        visited = new boolean[N];
        sequence = new ArrayList<>();

        // 입력받기
        for (int i = 0; i < N; i++) {
            Narr[i] = sc.nextInt();
        }

        // 배열 정렬
        Arrays.sort(Narr);

        // 백트래킹 시작
        backtrack(0);
    }

    static void backtrack(int depth) {
        if (depth == M) {
            // 수열이 완성된 경우 출력
            for (int num : sequence) {
                System.out.print(num + " ");
            }
            System.out.println();
            return;
        }

        for (int i = 0; i < N; i++) {
            if (!visited[i]) {
                visited[i] = true;
                sequence.add(Narr[i]);
                backtrack(depth + 1);
                sequence.remove(sequence.size() - 1); // 되돌리기
                visited[i] = false;
            }
        }
    }
}

 

 

백트래킹의 전형적인 문제이다.

 

728x90

'백준' 카테고리의 다른 글

백준 1300 - Java  (0) 2024.11.19
백준 15666 - Java  (0) 2024.11.18
백준 11054 - java  (1) 2024.11.15
백준 2110 - Java  (0) 2024.11.14
백준 11403 - Java  (0) 2024.11.13