백준) 15651. N과 M(3)(자바)
https://www.acmicpc.net/problem/15651
자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.
1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다.
입출력1
입력 : 3 1
출력 :
1
2
3
입출력2
입력 : 4 2
출력 :
1 1
1 2
1 3
1 4
2 1
2 2
2 3
2 4
3 1
3 2
3 3
3 4
4 1
4 2
4 3
4 4
- 중복 가능함
- N개 중에 M개 뽑기
import java.util.Scanner;
public class Main{
static int N, M;
static int[] selected; // 기록용
static StringBuilder sb = new StringBuilder();
public static void main(String[] args){
input(); // 입력
recursion(1); // 재귀 시작
System.out.println(sb.toString()); // 출력
}
public static void input(){
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
M = sc.nextInt();
selected = new int[M+1];
}
public static void recursion(int k) { // 1, 2, 3 ...
if (k == M + 1) { // 다 골랐다!(종료)
for (int i = 1; i <= M; i++) sb.append(selected[i]).append(' ');
sb.append('\n');
} else {
for (int cand = 1; cand <= N; cand++) {
selected[k] = cand;
recursion(k + 1); // next..
selected[k] = 0; // 선택
}
}
}
}
참고 : 한 번에 끝내는 코딩테스트 369 Java편 초격차 패키지 Online part3