코딩 테스트(JAVA)/인프런 문제풀이

중복순열

Lea Hwang 2022. 5. 3. 12:25

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 Main {
	static int[] pm;
	static int n, m;
	public void DFS(int L) { // L : Level
		if(L == m) {
			for(int x : pm) System.out.print(x + " ");
			// 줄바꿈
			System.out.println();
		}else {
			for(int i=1; i<=n; i++) { // 1 2 3
				pm[L] = i;
				DFS(L+1);
			}
		}
	}

	public static void main(String[] args) { 
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		n = kb.nextInt(); // 3 
		m = kb.nextInt(); // 2
		pm = new int[m];
		T.DFS(0);		

	}

}