백준 15651번 Node.js 풀이

2024년 2월 6일

문제 링크


- 풀이

const fs = require("fs");
const input = fs
  .readFileSync("/dev/stdin")
  .toString()
  .trim()
  .split(" ")
  .map(Number);

const [N, M] = input;

let selected = Array(M).fill(0);

let answer = "";

function dfs(depth) {
  if (depth === M) {
    return (answer += selected.join(" ") + "
");
  }

  for (let i = 1; i <= N; i++) {
    selected[depth] = i;

    dfs(depth + 1);
  }
}

dfs(0);

console.log(answer);

여기서 중요한건 중복을 허용한다는 것이다. 방문처리 해줄 필요 없이 그냥 depth가 일치할때 값을 담아주었다.