15652번: N과 M (4)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
문제 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class boj15652 {
private int n;
private int m;
private int[] arr;
private StringBuilder answer;
public void solution() throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer infoToken = new StringTokenizer(reader.readLine());
n = Integer.parseInt(infoToken.nextToken());
m = Integer.parseInt(infoToken.nextToken());
arr = new int[m];
answer = new StringBuilder();
dfs(0, 1);
System.out.println(answer);
}
// 현재 고르는 숫자의 범위를 한정시키기 위한 largestPick
private void dfs(int level, int largestPick){
if (level == m){
for (int i = 0; i < m; i++) {
answer.append(arr[i]).append(' ');
}
}else for (int i = largestPick; i < n + 1; i++) {
arr[level] = i;
dfs(level + 1, i);
}
}
public static void main(String[] args) throws IOException {
new boj15652().solution();
}
}
출력 결과
3 1
1 2 3
'Algorithm' 카테고리의 다른 글
백준 9465 스티커 (0) | 2023.07.20 |
---|---|
백준 1912 연속합 (0) | 2023.07.20 |
백준 15651 N과 M (3) (0) | 2023.07.19 |
백준 2252 줄 세우기 (0) | 2023.07.18 |
백준 5904 Moo 게임 (0) | 2023.07.17 |