관리 메뉴

hyeals study

[백준 15649] [백트래킹] [JAVA] N과M(1) 본문

백준

[백준 15649] [백트래킹] [JAVA] N과M(1)

hyeals 2020. 9. 8. 11:50

 

import java.util.Scanner;

public class Main {

    static int N;
    static int M;
    static boolean[] visited;
    static int[] answer;
    static StringBuilder ans = new StringBuilder();

    static void backtracking(int num){
        if(num==M){
            for(int i=0; i<M; i++){
                ans.append(answer[i]+" ");
            }
            ans.append("\n");
            return;
        }

        for(int i=1; i<=N; i++){
            if(!visited[i]){
                visited[i] = true;
                answer[num] = i;
                backtracking(num+1);
                visited[i] = false;
            }
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        N = sc.nextInt();
        M = sc.nextInt();
        visited = new boolean[N+1];
        answer = new int[N+1];

        backtracking(0);

        System.out.println(ans);
    }
}

- 방문했는지 체크한 이유: 중복을 허용하지 않기 때문에

 

 

+ 추가적으로 공부해야 할 부분: 메모리와 시간 줄일 수 있는 방법

Comments