문제링크
https://www.acmicpc.net/problem/15650
풀이-1
let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString();
const [N, M] = input.split(" ").map((n) => parseInt(n));
if (N === M) {
answer = "";
for (let i = 1; i <= N; ++i) {
answer += `${i} `;
}
console.log(answer.trim());
} else {
let answer = "";
let rest = M;
let recursive = (start, rest, arr) => {
if (rest === 0) {
answer = answer + `${arr.join(" ")}\n`;
} else {
for (let i = start; i <= N; ++i) {
if (rest - 1 <= N - i) {
recursive(i + 1, rest - 1, [...arr, i]);
}
}
}
};
recursive(1, rest, []);
console.log(answer.trim());
}
풀이-2
같은 문제를 다른 방식으로도 풀어봤다.
let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString();
const [N, M] = input.split(" ").map((n) => parseInt(n));
if (N === M) {
answer = "";
for (let i = 1; i <= N; ++i) {
answer += `${i} `;
}
console.log(answer.trim());
} else {
let visited = Array(N + 1).fill(false);
let arr = [];
let answer = "";
let dfs = (start, cnt) => {
if (cnt === M) {
answer = answer + `${arr.join(" ")}\n`;
return;
}
for (let i = start; i <= N; ++i) {
if (!visited[i]) {
visited[i] = true;
arr.push(i);
dfs(i + 1, cnt + 1);
visited[i] = false;
arr.pop();
}
}
};
dfs(1, 0);
console.log(answer.trim());
}
'🔒Algorithm' 카테고리의 다른 글
백준[node.js] > 16953번 A->B (0) | 2024.11.24 |
---|---|
백준[node.js] > 9095번 1, 2, 3 더하기 (0) | 2024.11.23 |
백준[node.js] > 1966번 제출 (0) | 2024.11.20 |
백준 [nodejs] > 1629번 곱셈 (0) | 2024.11.17 |
백준 [node.js] > 1916번 최소 비용 구하기 (1) | 2024.11.16 |