Algorithm

[BJ]10974번: 모든순열(Java)

옥돔이와 연근이 2022. 8. 30. 21:43
반응형

10974번: 모든 순열

문제

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

입력

첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다.

출력

첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다.

예제 입력 1

3

예제 출력 1

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

그냥 순열


🤦‍♀️ My Solution

package 순열조합;

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

public class BJ_10974 {
    static int N;
    static boolean check[];
    static int select[];

    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        N = Integer.parseInt(br.readLine());
        check = new boolean[N];
        select = new int[N];
        permu(0);
    }

    static public void permu(int cnt) {
        // 기저조건
        if (cnt == N) {
            for (int i = 0; i < N; i++) {
                System.out.print(select[i] + " ");
            }
            System.out.println();
            return;
        }

        for (int i = 0; i < N; i++) {
            if (check[i])
                continue;
            check[i] = true;
            select[cnt] = i + 1;
            permu(cnt + 1);
            check[i] = false;
        }
    }

}

반응형