1. 재귀 호출로 모든 경우를 확인한다.
2. 뽑는 경우
3. 안뽑고 다음거로 넘어가는경우
4. 2 끝나면 3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.*; | |
import java.io.*; | |
/** | |
* https://www.acmicpc.net/problem/6603 | |
* BOJ 백준온라인져지 6603 로또 풀이 | |
*/ | |
public class Main { | |
private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); | |
private static int arr[]; | |
private static int cnt = 0; | |
public static void main (String args[]) throws IOException { | |
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); | |
while (true) { | |
String str1[] = br.readLine().split(" "); | |
int N = Integer.parseInt(str1[0]); | |
if (N == 0) break; | |
arr = new int[N]; | |
for (int i = 0; i < N; i++) { | |
arr[i] = Integer.parseInt(str1[i + 1]); | |
} | |
Arrays.sort(arr); | |
dfs(0, 6, ""); | |
bw.write("\n"); | |
} | |
bw.flush(); | |
} | |
private static void dfs (int start, int N, String str) throws IOException { | |
if (N == 0) { | |
bw.write(str); | |
bw.write("\n"); | |
return; | |
} | |
if (start == arr.length) return; | |
dfs(start + 1, N - 1, str + arr[start] + " "); | |
dfs(start + 1, N, str); | |
} | |
} |
문제
독일 로또는 {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,3,5,13,21], ..., [3,5,8,13,21,34])
집합 S와 k가 주어졌을 때, 숫자를 고르는 모든 방법을 구하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 숫자는 k (6 < k < 13)이고, 다음 k개 숫자는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 주어진다.
입력의 마지막 줄에는 0이 하나 주어진다.
출력
각 테스트 케이스 마다 숫자를 고르는 모든 방법을 출력한다. 이 때, 사전 순으로 출력한다.
각 테스트 케이스 사이에는 빈 줄을 하나 출력한다.
'IT > 알고리즘' 카테고리의 다른 글
BOJ 백준온라인져지 3460 이진수 풀이 (0) | 2018.04.06 |
---|---|
BOJ 백준온라인져지 2845 파티가 끝나고 난 뒤 풀이 (0) | 2018.04.06 |
BOJ 백준온라인져지 2641 다각형그리기 풀이 (0) | 2018.04.05 |
BOJ 백준온라인져지 2622 삼각형 풀이 (0) | 2018.04.04 |
BOJ 백준온라인져지 2548 대표 자연수 풀이 (0) | 2018.04.03 |