본문 바로가기

Algorithm/Inflearn

[Inflearn] 자바 알고리즘 문제풀이 #08-04 4. 중복순열 구하기(DFS)

문제

설명

1부터 N까지 번호가 적힌 구슬이 있습니다. 이 중 중복을 허락하여 M번을 뽑아 일렬로 나열하는 방법을 모두 출력합니다.

 

입력 

첫 번째 줄에 자연수 N(3<=N<=10)과 M(2<=M<=N)이 주어집니다.

 

출력 

첫 번째 줄에 결과를 출력합니다.

출력순서는 사전순으로 오름차순으로 출력합니다.

예시 입력 1 

3 2

예시 출력 1

1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3

 

 

 

내 풀이 = 선생님 풀이
import java.util.Scanner;

public class Main8_4 {
    static int n, m;
    static int[] arr;
    public void DFS(int L){
        if(L==m) {
            for(int x : arr) System.out.print(x + " ");
            System.out.println();
        }
        else {
            for (int i = 1; i <= n; i++) {
                arr[L]=i;
                DFS(L+1);
            }
        }
    }

    public static void main(String[] args) {
        Main8_4 T = new Main8_4();
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt(); //번호
        m = sc.nextInt(); //뽑는 횟수
        arr = new int[m];
        T.DFS(0);
    }
}

 

 

 

결과