코딩테스트 대비/백준 알고리즘

BOJ - 10974번 모든 순열

JellyApple 2024. 11. 22. 00:05

1. 문제 : https://www.acmicpc.net/problem/10974

2. 문제 유형 : 백트래킹

3. 문제 티어 : 실버3

4. 문제 풀이 
1) 백트래킹으로 푸는 전형적인 문제
2) N만큼 반복문 돌리면서 백트래킹 재귀 함수 호출 후 
3) 이전 단계로 돌아가기 위해 visited와 current.pop() 해준다.

 

5. 문제 코드

const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().split("\n");
let N = Number(input[0]);
let visited = new Array(N+1).fill(false);
let arr = [];

// 재귀함수
function recursive(current, visited , n){
    if(current.length === n){
        console.log(current.join(" "));
        return;
    }
    for(let i=1;i<=n;i++){
        if(!visited[i]){
            visited[i] = true;
            current.push(i);
            recursive(current, visited , n);
            current.pop();
            visited[i] = false;
        }
    }
}
recursive(arr,visited,N);