백준/백트래킹

10974 모든 순열

have a good time 2024. 7. 13. 12:35
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
 
	static int number[];
	static boolean visit[];
	static int result[];
	static int N;
	
    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());
        
    	number = new int[N];
    	visit = new boolean[N];    	
    	result = new int[N];    
    	
    	for(int i=0; i<N; i++) {
    		number[i] = i+1;
    	}    	
    
    	dfs(0);
    	
    }
    
    
    public static void dfs(int depth) {    	
   
    	if(depth==N) {      		
    		for(int i=0; i<N; i++) {
    			System.out.print(result[i] + " ");
    		}
    		System.out.println();    		
    		return;
    	}
    	
    	for(int i=0; i<N; i++) {
    		
    		if(!visit[i]) {
    			
    			visit[i] = true;
    			result[depth] = number[i];
    			dfs(depth+1);
    			visit[i] = false;
    			
    		}    		
    	}  	
    	
     }
    }

 

 

 

참고 블로그 : https://velog.io/@gangintheremark/DFS-%EC%A4%91%EB%B3%B5-%EC%97%86%EB%8A%94-%EC%88%9C%EC%97%B4-%EA%B5%AC%ED%95%98%EA%B8%B0