[백준] 10974 - 모든 순열(JavaScript)

zzzzsb·2022년 7월 25일
0

백준/BOJ

목록 보기
5/10

백준 10974번 모든 순열

https://www.acmicpc.net/problem/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


풀이/접근 방법(Node.js)

[1,2,3,....n]으로 구성된 배열을 만들어준 후, 재귀함수를 이용해 순열을 만들어 줬다.

3
 0 1 2
[1,2,3] [] -> [2,3] [1,] -> [3] [1,2] -> [] [1,2,3]
                         -> [2] [1,3] -> [] [1,3,2]
           -> [1,3] [2,]        

코드(Node.js)

const n = Number(require("fs").readFileSync("/dev/stdin").toString().trim());

const result = [];
const arr = [];
for(let i=1; i<=n; i++) arr.push(i);

function getPermutations(arr, permutation){
    if(permutation.length === n){
        result.push(permutation.join(" "));
    }
    for(let i=0; i<arr.length; i++){
        let rest = [...arr.slice(0,i) , ...arr.slice(i+1)];
        permutation.push(arr[i]);
        getPermutations(rest, permutation);
        permutation.pop();
    }
}

getPermutations(arr, []);
console.log(result.join("\n"))


profile
성장하는 developer

0개의 댓글