ezhoon

[인프런] 08_04 중복순열 구하기(DFS) 본문

[Java] 인프런 문제풀이/DFS, BFS 활용

[인프런] 08_04 중복순열 구하기(DFS)

ezhoon 2022. 2. 19. 21:03

📖  문제


  • 첫 번째 줄에 결과를 출력 
  • 출력순서는 오름차순으로 출력
    • 1부터 N까지 번호가 적인 구슬이 있습니다. 이 중 중복을 허락하여 M 번을 뽑아 일렬로 나열하는 압벙르 모두 출력하시오

출력

 

⚠️  주의사항


  • 중복 허락
  • 오름차순 출력

 

✍️  이해


**
 * 1. 주어진 입력 설정 후 숫자들 저장할 배열 생성
 * 2. 모든 숫자 한 번씩 돌면서 해야하므로 DFS 
 * 3. DFS 호출 수가 M개 일때 배열 출력
 * 4. 1~N까지 번호가 적혀 있으므로 1~N번 반복해서 배열에 i저장 후 DFS(L+1) 호출
 */

 

✏️  풀이


import java.util.Scanner;

public class Main {
    static int N, M;
    static int[] arr;

    void DFS(int L) {

        if (L == M) {
            for (int i : arr) System.out.print(i + " ");
            System.out.println();
        } else {
            for (int i = 1; i <= N; i++) {
                arr[L] = i;
                DFS(L + 1);
            }
        }
    }

    public static void main(String[] args) {
        Main T = new Main();

        Scanner sc = new Scanner(System.in);

        N = sc.nextInt();
        M = sc.nextInt();
        arr = new int[M];

        T.DFS(0);
    }
}

 

 

Comments