프로그래밍/알고리즘 풀이
[node.js] 모든 순열 ( 백준 10974번 )
카카수(kakasoo)
2021. 7. 30. 15:57
반응형
// 백준 10974번 모든 순열을 풀었습니다.
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => {
const elements = new Array(Number(line)).fill(0).map((el, i) => i + 1);
const result = [...permutations(elements)].map((el) => el.join(" ")).sort();
for (const a of result) {
console.log(a);
}
});
/**
*
* @param {number[]} elements
*/
function* permutations(elements) {
if (elements.length === 1) {
yield elements;
} else {
const [first, ...rest] = elements;
for (const a of permutations(rest)) {
for (let i = 0; i < elements.length; i++) {
const start = a.slice(0, i);
const ended = a.slice(i);
yield [...start, first, ...ended];
}
}
}
}
혹시라도 이 내용을 보는 분이 있다면, 순열에 대한 공식은 그냥 외우라고 하고 싶다.
C++이나 파이썬에서는 순열과 조합이 제공되는 것 같던데, JS에는 그런 게 없다.
제너레이터가 생소하다면 한 번 외워둘 만 하다.
반응형