백준
백준 15652 N과 M (4)(Java)
Park DJ
2023. 2. 1. 03:11
https://www.acmicpc.net/problem/15652
15652번: N과 M (4)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
해석 및 팁
이 문제는 백준 15650N과 M (2)과 거의 동일한 문제입니다. 차이점은 이 문제는 중복을 허용한다는 점입니다. 따라서 재귀호출을 할 때 i+1 이 아닌 i로 호출해 주면 됩니다.
Java 코드
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
static int n;
static int m;
static StringBuilder sb;
static ArrayList<Integer> list;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
sb = new StringBuilder();
list = new ArrayList<>();
n = sc.nextInt();
m = sc.nextInt();
dfs(1);
System.out.println(sb);
}
public static void dfs(int num) {
if(list.size() == m) {
for(int i = 0; i < m; i++) sb.append(list.get(i)+" ");
sb.append("\n");
return;
}
for(int i = num; i <= n; i++) {
list.add(i);
dfs(i);
list.remove(Integer.valueOf(i));
}
}
}