알고리즘/BOJ - Java
[BOJ/Java] 15651. N과 M (3)
ImJay
2024. 2. 4. 16:47
반응형
[BOJ/Java] 15651. N과 M (3)
15651번: N과 M (3)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
풀이
package edu.ssafy.im.BOJ.S3.No15651;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int n, m;
static int[] sel;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
StringTokenizer st = new StringTokenizer(input);
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
sel = new int[m];
recursive(0, 1); // 재귀 함수 호출
System.out.print(sb);
}
private static void recursive(int i, int k) {
// basis part
if (i == m) { // 수열의 길이가 M이면 출력
for (int s : sel) {
sb.append(s).append(" ");
}
sb.append("\n");
return;
}
// inductive part
for (int j = k; j <= n; j++) { // 1부터 N까지의 수 중에서 선택
sel[i] = j; // 선택된 수를 저장
recursive(i + 1, k); // 다음 자리 숫자 선택을 위해 재귀 호출
}
}
}
반응형