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돌고 반복!
'JavaScript' 카테고리의 다른 글
[프로그래머스 JavaScript] 올바른 괄호 (0) | 2022.09.13 |
---|---|
[백준 JavaScript] 2606번 바이러스 (0) | 2022.09.10 |
[백준 JavaScript] 11726번 2×n 타일링 (0) | 2022.09.09 |
[백준 JavaScript] 9095번 1,2,3 더하기 (0) | 2022.09.09 |
[백준 JavaScript] 1929번 소수 구하기 (0) | 2022.09.07 |