반응형
📝문제
15652번: N과 M (4)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
💡Problem
- 중복 순열을 구하며 비내림차순을 만족해야 한다.
🔑Solution
- 이전값(idx)을 재귀로 넘겨서 현재 값이 이전 값보다 클 때만 출력한다.
💻Code
import java.util.*;
public class Main {
static int[] num;
static boolean[] visited;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
num = new int[N + 1];
visited = new boolean[N + 1];
dfs(N, M, 0, 0);
}
static void dfs(int N, int M, int count, int idx) {
if (count == M) {
for (int i = 0; i < M; i++) { // 현재 결과배열을 출력
System.out.print(num[i] + " ");
}
System.out.println("");
return; // DFS 종료
}
for (int i = 1; i <= N; i++) {
if (idx <= i) {
num[count] = i;
dfs(N, M, count + 1, num[count]);
}
}
}
}
'알고리즘 > 백준(JAVA)' 카테고리의 다른 글
[백준] 9663번: N-Queen [JAVA-자바] (0) | 2021.01.21 |
---|---|
[백준] 1436번: 영화감독 숌 [JAVA-자바] (0) | 2021.01.19 |
[백준] 1018번: 체스판 다시 칠하기 [JAVA-자바] (0) | 2021.01.19 |
[백준] 2748번: 피보나치 수 2 [JAVA-자바] (0) | 2021.01.12 |
[백준] 1003번: 피보나치 함수 [JAVA-자바] (0) | 2021.01.12 |
댓글