오름차순으로 주어진 숫자 집합에서 6개의 숫자를 골라 조합을 만드는 문제다
각 테스트 케이스는 한 줄에 하나씩
테스트 케이스의 숫자중 맨 첫 숫자는 집합 원소의 수
그 다음 숫자는 모두 집합의 원소
입력의 마지막 줄은 0
각 테스트 별로 한 줄에 하나씩 숫자를 고를 수 있는 경우를 출력
테스트 케이스 간의 출력은 빈 줄 하나 출력
테스트케이스가 여러가지인 조합 문제다
종료 조건만 잘 정리해주면 된다
//로또
public class Main {
static int K;
static int[] arr;
static int[] selected;
static StringBuilder sb;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
sb = new StringBuilder();
String input = br.readLine();
while(true) {
StringTokenizer st = new StringTokenizer(input, " ");
K = Integer.parseInt(st.nextToken());
arr = new int[K];
selected = new int[6];
for(int i=0; i<K; i++) {
int value = Integer.parseInt(st.nextToken());
arr[i] = value;
}
Arrays.sort(arr);
comb(0, 0);
input = br.readLine();
if(!input.equals("0")) {
sb.append("\n");
}
else {
break;
}
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
static void comb(int depth, int start) {
if(depth==6) {
for(int i=0; i<6; i++) {
sb.append(selected[i] + " ");
}
sb.append("\n");
return;
}
for(int i=start; i<K; i++) {
selected[depth] = arr[i];
comb(depth+1, i+1);
}
}
}