백준 15656번
https://www.acmicpc.net/problem/15656
N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.
import java.util.*;
import java.io.*;
public class Main {
static StringBuilder sb = new StringBuilder();
static int N; static int M;
static int arr[];
static int ans[];
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
arr = new int[N];
ans = new int[M];
st = new StringTokenizer(br.readLine());
for(int i=0; i<N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
DFS(0);
bw.write(sb.toString());
bw.flush();
bw.close();
} // End of main
static void DFS(int depth) {
if(depth == M) {
for(int i=0; i<M; i++) {
sb.append(ans[i]).append(' ');
}
sb.append('\n');
return;
}
for(int i=0; i<N; i++) {
ans[depth] = arr[i];
DFS(depth + 1);
}
} // End of DFS
} // End of Main class
import java.io.*
import java.util.*
private val sb = StringBuilder()
private lateinit var arr : IntArray
private lateinit var ans : IntArray
private var N = 0; private var M = 0
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.`out`))
var st = StringTokenizer(br.readLine())
N = st.nextToken().toInt()
M = st.nextToken().toInt()
arr = IntArray(N)
ans = IntArray(M)
st = StringTokenizer(br.readLine())
for(i in 0 until N) {
arr[i] = st.nextToken().toInt()
}
Arrays.sort(arr)
DFS(0)
bw.write(sb.toString())
bw.flush()
bw.close()
} // End of main
private fun DFS(depth : Int) {
if(depth == M) {
for(i in 0 until M) {
sb.append(ans[i]).append(' ')
}
sb.append('\n')
return;
}
for(i in 0 until N) {
ans[depth] = arr[i]
DFS(depth+1)
}
} // End of DFS