ALGORITHM

[JAVA] 백준 10974- 모든 순열

연듀 2022. 11. 29. 09:42

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

 

10974번: 모든 순열

N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main{

    static int n;
    static int[] arr;
    static boolean[] visited;
    public static void dfs(int cnt){
        if(cnt == n){
            for(int x : arr){
                System.out.print(x+" ");
            }
            System.out.println();
            return;
        }
        for(int i=1; i<=n; i++){
            if(!visited[i]){
                visited[i] = true;
                arr[cnt] = i;
                dfs(cnt+1);
                visited[i] = false;
            }
        }
    }
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

         n = Integer.parseInt(br.readLine());

        arr = new int[n];
        visited = new boolean[n+1];


        dfs(0);
    }
}

 

 

 

n개의 자연수에서 n개를 고른 수열이라고 보면된다.