💡 문제

💬 입출력 예시

📌 풀이(소스코드)
import java.util.Scanner;
public class Main {
static int n;
static int m;
static int[] arr;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
arr = new int[m];
permutation(0);
}
static void permutation(int count) {
if (count == m) {
if(isValid()) {
for (int i = 0; i < m; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
return;
}
for (int i = 1; i <= n; i++) {
arr[count] = i;
permutation(count+1);
}
}
static boolean isValid() {
for (int i = 0; i < m-1; i++) {
if (arr[i] > arr[i+1]) {
return false;
}
}
return true;
}
}
📄 해설
- 중복 순열을 이용하면 쉽게 해결이 가능한 문제
- 비내림차순이어야 한다는 문제의 조건 만족을 위해 종료 조건에서 비내림차순 여부 확인 메소드를 호출한다.