๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€ JS

[๋ฐฑ์ค€] node.js/ 15649 N๊ณผ M 1

by Tamii 2021. 10. 20.
๋ฐ˜์‘ํ˜•

๋‚ด ํ’€์ด

const fs = require('fs');

let [n, m] = (fs.readFileSync('./dev/stdin') + '').toString().trim().split(' ');

let ans = [];
let visit = new Array(parseInt(n)).fill(false);

const back = (d, n, m) => {

  // m๊ฐœ์˜ ์›์†Œ๊นŒ์ง€ ์ฐผ๋Š”์ง€ ํ™•์ธ
  if (d === m) {
    console.log(...ans);
    return;
  }
  
  for (let i = 0; i < n; i++) {
    if (!visit[i]) {
      visit[i] = true;
      ans.push(i + 1);

      back(d + 1, n, m);

      ans.pop();
      visit[i] = false;
    }
  }
};

back(0, parseInt(n), parseInt(m));

์‚ฌ์‹ค ์ด๋ฒˆ ๋ฌธ์ œ๋Š” ๋ฐฑํŠธ๋ž˜ํ‚น ๋ฌธ์ œ์ธ๊ฒƒ์ด ํŒŒ์•…๋˜์„œ ๊ธฐ์กด์— ํ’€์—ˆ๋˜ ๐Ÿ”— ํŒŒ์ด์ฌ ํ’€์ด๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ํ’€์ดํ–ˆ๋‹ค.

 

n๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ€์ง„ visit์ด๋ผ๋Š” boolean flag๋ฅผ ๋งŒ๋“ค์–ด

๊ฐ ์š”์†Œ์˜ ๋‚ด๋ถ€๋กœ  ๋Œ ๋•Œ ๋ณธ์ธ์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค์ง€ ์•Š๋„๋ก ํ–ˆ๋‹ค.

 

 

 

 

 

์˜ˆ์‹œ ์‚ดํŽด๋ณด๊ธฐ

 

์‹ค์ œ console ์„ ์ฐ์–ด ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด ๊ฐ€์žฅ ๋ฐ”๊นฅ ์ˆ˜๋ฅผ ๋ฐฉ๋ฌธ ์™„๋ฃŒ๋กœ ๊ฑธ์–ด๋‘๊ณ 

๊ทธ ๋‚ด๋ถ€์—์„œ ans๊ฐ€ m๊ฐœ๊ฐ€ ๋ ๋•Œ๊นŒ์ง€ ๊ณ„์† ๋Œ๊ฒŒ ๋œ๋‹ค.

d === m ์ด๋˜๋ฉด ๋‹ค ์ฐฌ ans์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•œ ํ›„ , return ํ•ด์„œ ๋‚˜์˜ค๊ณ 

์ด์ „์— ๋Œ๋˜ for๋ฌธ์œผ๋กœ ๋Œ์•„๊ฐ€ ๋งˆ์ € ๋Œ๊ฒŒ ๋œ๋‹ค.

 

4,2  ์ž…๋ ฅ ์‹œ 

const fs = require('fs');

let [n, m] = (fs.readFileSync('./dev/stdin') + '').toString().trim().split(' ');

let ans = [];
let visit = new Array(parseInt(n)).fill(false);

const back = (d, n, m) => {
  console.log(d, n, m, '****************');
  if (d === m) {
    console.log(...ans);
    returnl
  }
  for (let i = 0; i < n; i++) {
    console.log('i:', i, 'visit:', visit, 'ans:', ans);
    if (!visit[i]) {
      visit[i] = true;
      ans.push(i + 1);

      back(d + 1, n, m);

      ans.pop();
      visit[i] = false;
    }
  }
};

back(0, parseInt(n), parseInt(m));

 

 

๋Œ“๊ธ€