본문 바로가기
개발 노트/백준, 프로그래머스 풀이

[백준 10974/javascript] 모든 순열

by tokkiC 2022. 9. 3.

백트래킹 기본 문제

중복 불가이므로 isused 배열을 사용하여 사용중인지를 체크하였다

사전순 정렬은 어차피 1부터 증가시키며 넣어 완성하므로 신경쓰지 않아도 된다

https://www.acmicpc.net/problem/10974

 

10974번: 모든 순열

N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.

www.acmicpc.net

let input;

const readline = require("readline").createInterface({
  input: process.stdin,
  output: process.stdout,
});

readline.on("line", (line) => {
  input = line;
  readline.close();
});

readline.on("close", () => {
  solution(input);
  process.exit();
});

const solution = (inp) => {
  let n = Number(inp);
  let arr = Array(n).fill(0);
  let isused = Array(10).fill(false);
  let ans = [];
  let answer = [];

  const bt = (k) => {
    if (n === k) {
      ans = arr.join(" ");
      answer.push(ans);
    } else {
      for (let i = 1; i <= n; i++) {
        if (!isused[i]) {
          arr[k] = i;
          isused[i] = true;
          bt(k + 1);
          isused[i] = false;
        }
      }
    }
  };
  bt(0);
  console.log(answer.join(" \n"));
};

댓글