🐣 알고리즘 삐약/💻 백준 삐약

87 삐약 : 백준 15654| N과 M (5) [바킹독| 백트래킹 |JAVA]

우주수첩 2024. 8. 14. 16:06
728x90

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

 

 

package BKD_0x0C_BackTracking;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class BOJ_15654 {
    static int N;
    static int M;
    static int[] arr;
    static boolean[] visited;

    static int[] input;

    static void dfs(int depth){
        if(depth==M){
            for(int val : arr){
                System.out.print(val+" ");
            }
            System.out.println();
            return;
        }
        for(int i=0;i<N;i++){
            if(!visited[i]){
                visited[i]=true;
                arr[depth]=input[i];
                dfs(depth+1);
                visited[i]=false;
            }
        }

        return;

    }

    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[M];
        visited = new boolean[N];
        input = new int[N];


        st = new StringTokenizer(br.readLine());

        for(int i=0;i<N;i++){
            input[i]=Integer.parseInt(st.nextToken());
        }
        Arrays.sort(input);
        dfs(0);

    }
}

 

728x90