JavaScript
[백준 node.js] 15649번 N과 M(1) (JavaScript)
운으로
2022. 9. 25. 14:42
https://www.acmicpc.net/problem/15649
15649번: N과 M (1)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
<풀이>
const input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split(" ")
.map((v) => parseInt(v));
[n, m] = input;
const visit = new Array(n).fill(0);
const dfs = (result) => {
if (result.length === m) {
console.log(result.join(" "));
return;
}
for (let i = 0; i < n; i++) {
if (visit[i] === 1) continue;
visit[i] = 1;
result.push(i + 1);
dfs(result);
result.pop();
visit[i] = 0;
}
};
dfs([]);
방문하지 않은 곳 방문하고 dfs다 돌면 출력해주고 return해서 pop해주고 다시 dfs돌고 반복!