문제 : https://www.acmicpc.net/problem/6603
6603번: 로또
문제 독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다. 로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고 번호를 선택하는 것이다. 예를 들어, k=8, S={1,2,3,5,8,13,21,34}인 경우 이 집합 S에서 수를 고를 수 있는 경우의 수는 총 28가지이다. ([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2
www.acmicpc.net
문제 요약 : 주어진 숫자를 6개 선택하여 오름차순으로 출력
입력 | 출력 |
7 ≤ k(숫자개수) ≤ 13 k = 1~49 마지막줄 0 입력 |
주어진 숫자를 6개 선택하여 오름차순 출력 |
JAVA
채점 번호 | 아이디 | 문제 번호 | 결과 | 메모리 | 시간 | 언어 | 코드 길이 |
16498532 | cbkpar | 6603 | 맞았습니다!! | 14436KB | 80ms | Java | 910B |
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int[] arr = new int[13];
static int[] s = new int[6];
static StringBuilder sb = new StringBuilder();
static int n;
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int i;
while(true) {
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
if(n==0) break; //0입력시 종료
if(s[0]!=0) sb.append("\n");//첫번째가 아니라면 빈줄 추가
for(i=0;i<n;i++) arr[i] = Integer.parseInt(st.nextToken());
dfs(0,0);
}
System.out.println(sb.toString());
}
static void dfs(int o, int k) {
if(k==6) {//6개를 다 골랐다면 고른 숫자 출력 후 리턴
for(int i=0;i<5;i++) sb.append(s[i]+" ");
sb.append(s[5]+"\n");
return;
}
for(int i=o;i<n;i++) {//순서대로 공을 고르는 과정
s[k]=arr[i];
dfs(i+1,k+1);
}
}
}
'백준온라인' 카테고리의 다른 글
[백준온라인] 1120번 문자열 (0) | 2019.12.18 |
---|---|
[백준온라인] 1049번 기타줄 (0) | 2019.12.18 |
[백준온라인] 2042번 구간 합 구하기 (0) | 2019.12.14 |
[백준온라인] 10868번 최솟값 (0) | 2019.12.12 |
[백준온라인] 13547번 수열과 쿼리5 (0) | 2019.12.11 |