https://www.acmicpc.net/problem/15651
15651번: N과 M (3)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
📌 작성한 코드
// 15651
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "Beakjoon/Silver/test.txt";
const input = fs.readFileSync(filePath).toString().trim();
const [N, M] = input.split(" ").map(Number);
const arr = new Array(M);
let answer = "";
const backTracking = (depth) => {
if (depth === M) {
answer += `${arr.join(" ")}\n`;
return;
}
for (let i = 1; i <= N; i++) {
arr[depth] = i;
backTracking(depth + 1);
}
};
backTracking(0);
console.log(answer);
📌 풀이
백트래킹을 이용해서 원하는 길이 만큼의 수열을 구하는 문제이다. 단, 중복가능하다. 아주아주 간단한 문제이다.
N과 M(1) 에서 중복이 가능하니까 중복을 검사하는 로직을 빼면 바로 해결된다.
📌 주의
자바스크립트로 알고리즘 문제를 풀 때, `console.log()`는 시간을 많이 사용한다고 한다. 그래서 이런 문제에서 매 단계에 `console.log()`를 하면 시간 초과가 발생한다. 그러므로 답을 한 곳에 저장해 놓았다가 마지막에 한번만 출력하도록 해야 한다.
✅ 성공

'알고리즘 > 백준' 카테고리의 다른 글
| [JavaScript/백트래킹] 백준 실버 3 : 15654 - N과 M (5) (0) | 2024.02.02 |
|---|---|
| [JavaScript/백트래킹] 백준 실버 3 : 15652 - N과 M (4) (0) | 2024.02.01 |
| [JavaScript/백트래킹] 백준 실버 3 : 15650 - N과 M (2) (0) | 2024.02.01 |
| [JavaScript/백트래킹] 백준 실버 3 : 15649 - N과 M (1) (1) | 2024.02.01 |
| [JavaScript/BFS] 백준 골드 4 : 12851 - 숨바꼭질 2 (1) | 2024.01.31 |