코딩테스트/백준

백준 15654 : N과 M (5) _자바 Java

플래시🦥 2023. 1. 18.
반응형

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

 

15654번: N과 M (5)

N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열

www.acmicpc.net


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

public class Main {
	static int[] num,arr;
	static boolean visit[];
	static int N,M;
	static StringBuilder sb = new StringBuilder();
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str= br.readLine();
		StringTokenizer st = new StringTokenizer(str," ");
		
		N=Integer.parseInt(st.nextToken());	//N개의 자연수
		M=Integer.parseInt(st.nextToken());	//수열의 길이 M
		num= new int[N];
		arr=new int[M];
		visit=new boolean[N];
		st = new StringTokenizer(br.readLine()," ");
		for(int i=0;i<N;i++) {
			num[i]=Integer.parseInt(st.nextToken());
		}
		Arrays.sort(num);
		
		bt(0);
		System.out.println(sb);
	}//main()
	
	static void bt(int depth) {

		if(M==depth) {
			for(int i:arr)
				sb.append(i+" ");
			sb.append("\n");
			return;
		}
		
		for(int i=0;i<N;i++) {
			if(!visit[i]) {
				visit[i]=true;
				arr[depth]=num[i];
				bt(depth+1);	
				visit[i]=false;
			}
			
		}
	}//dt()
}//class Main
728x90
반응형

댓글