알고리즘

<백준> 15650번 자바 알고리즘

changha. 2021. 12. 30. 23:00
import java.util.*;

public class Main
{
    static int N, M;
    static int[] arr;
    static boolean[] visit;
    
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		N = input.nextInt();
		M = input.nextInt();
		
		arr = new int[N];
		visit = new boolean[N + 1];
		
		recursion(0);
	}
	
	public static void recursion(int idx) {
	    if (idx == M){
	        for(int i = 0; i < M; i++){
	            System.out.print(arr[i] + " ");
	        }
	        System.out.println();
	        return;
	    }
	    
	    for(int i = 1; i <= N; i++){
	        if(!visit[i]){
	            arr[idx] = i;
	            visit[i] = true;
	            recursion(idx + 1);
	            for(int j = i + 1; j <= N; j++){
	            visit[j] = false; // 2 -> 3 false 만듦, 1 -> 2,3 false 만듦 
	            }
	        }
	       
	        
	    }
	}
}