문제
1부터 N까지 번호가 적힌 구슬이 있습니다. 이 중 중복을 허락하여 M번을 뽑아 일렬로 나열 하는 방법을 모두 출력합니다.
입력
첫 번째 줄에 자연수 N(3<=N<=10)과 M(2<=M<=N) 이 주어집니다.
출력
첫 번째 줄에 결과를 출력합니다.
출력순서는 사전순으로 오름차순으로 출력합니다.
Key Point
- 1~자연수 N까지 모두 돌 동안 m크기의 배열 하나에 해당 자연수를 저장, 함께 뽑을 수 있는 1~N을 n번 더 돌린다.
풀이
내 풀이
public class Main {
static int n,m;
static int []pm;
public void DFS(int level) {
if(level==m){
for(int x : pm) System.out.print(x+" ");
System.out.println();
}
else {
for(int i =1; i<=n; i++){
pm[level] = i;
DFS(level+1);
}
}
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
n = in.nextInt();
m = in.nextInt();
pm = new int[m];
T.DFS(0);
}
}
'Algorithm > 문제 풀이' 카테고리의 다른 글
회의실 배정 (0) | 2022.06.20 |
---|---|
합이 같은 부분 집합(DFS) (0) | 2022.06.16 |
연속된 자연수의 합 (0) | 2022.05.20 |