acmicpc

[BAEKJOON] 6603. 로또

코드와이 2021. 3. 6. 22:57

 

문제링크

www.acmicpc.net/problem/6603

 

6603번: 로또

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로

www.acmicpc.net

 

package acmicpc.Silver2;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class 로또 {
	static int n;
	static boolean[] visited;
	static int[] input, numbers;
	static StringBuilder sb;
	
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		sb = new StringBuilder();
		
		while(true) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			
			n = Integer.parseInt(st.nextToken());
			
			if(n == 0) break;
			input = new int[n];
			
			for(int i = 0 ; i < n ; i++) {
				input[i] = Integer.parseInt(st.nextToken());
			}

			visited = new boolean[n];
			numbers = new int[6];
			go(0, 0);
			sb.append("\n");
		}
		sb.setLength(sb.length() - 2);
		System.out.println(sb);
	}

	public static void go(int cnt, int idx) {
		
		if ( cnt == 6 ) {
			
			for(int i = 0 ; i < 6 ; i++) {
				sb.append(numbers[i]).append(" ");
			}
			sb.setLength(sb.length() - 1);
			sb.append("\n");
			return;
		}
		
		if ( idx == n ) return;

		numbers[cnt] = input[idx];
		go(cnt + 1, idx + 1);
		go(cnt, idx + 1);
	}
}