N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.
첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다.
첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다.
3
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
[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,]
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"))