문제 풀이 및 개발 공간

[백준] 15654번 N과 M (5) (silver 3 본문

백준공부/java

[백준] 15654번 N과 M (5) (silver 3

gomduri43 2023. 10. 12. 23:12

import java.io.*;
import java.util.*;

public class Main{
    static int n;
    static int m;
    static int[] num;
    static boolean[] visit;
    static StringBuilder sb=new StringBuilder();
    public static void main(String[]args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st=new StringTokenizer(br.readLine());
        n=Integer.valueOf(st.nextToken());
        m=Integer.valueOf(st.nextToken());
        num=new int[n];
        visit=new boolean[n];
        st=new StringTokenizer(br.readLine());
        for(int i=0; i<n; i++){
            num[i]=Integer.valueOf(st.nextToken());
        }
        int[] temp=new int[m];
        Arrays.sort(num);
        dfs(temp,0);
        System.out.println(sb.toString());
    }

    public static void dfs(int[] temp, int l){
        if(l==m){
            for(int i=0;i<m; i++){
                sb.append(temp[i]+" ");
            }
            sb.append("\n");
            return;
        }
        for(int i=0;i<n;i++){
            if(visit[i]==false){
                visit[i]=true;
                temp[l]=num[i];
                dfs(temp,l+1);
                visit[i]=false;
            }

        }

    }
}