알고리즘
[BOJ] 6603번: 로또 (JAVA)
애용쓰
2023. 2. 20. 23:12
https://www.acmicpc.net/problem/6603
6603번: 로또
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로
www.acmicpc.net
import java.io.*;
import java.util.*;
public class Main {
static int[] S;
static int k;
static int[] answer;
static boolean[] visited;
static void getNum(int x, int start){
if(x==6){
for(int i=0;i<6;i++){
System.out.print(answer[i]+" ");
}
System.out.println();
return;
}
for(int i=start;i<k;i++){
answer[x]=S[i];
getNum(x+1, i+1);
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
answer = new int[6];
while(true){
st = new StringTokenizer(br.readLine());
k = Integer.parseInt(st.nextToken());
if(k==0){
break;
}
S = new int[k];
answer = new int[6];
for(int i=0;i<k;i++){
S[i] = Integer.parseInt(st.nextToken());
}
getNum(0,0);
System.out.println();
}
}
}
1. 주어진 배열 S에서 숫자 6개를 중복되지 않게 고르면 된다. (순서 상관 없으므로 조합)