Problem Solving/Baekjoon

[백준 6603]로또

머직타드 2019. 1. 17. 01:30

출처 : https://www.acmicpc.net/problem/6603

 

1. DFS(재귀함수)를 이용한다.

2. input배열과 뽑은 숫자를 임시로 저장할 temp배열이 필요하다.

3. idx_1 : input배열의 인덱스 / idx_2 : temp배열의 인덱스

4. 로또의 문제 특성상 K개중 6개만 뽑으면 된다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <cstdio>
using namespace std;
int input[13];
int temp[13];
int K;
 
void dfs(int idx_1, int idx_2) {
 
    if (idx_2== 6) {
        for (int i = 0; i < 6; i++printf("%d ", temp[i]);
        printf("\n");
        return;
    }
    for (int i = idx_1; i < K; i++) {
        temp[idx_2] = input[i];
        dfs(i + 1, idx_2+ 1);
    }
}
int main(void) {
    while (1) {
        scanf("%d"&K);
        if (K == 0return 0;
        else {
            for (int i = 0; i < K; i++scanf("%d"&input[i]);
            dfs(00);
            printf("\n");
        }
    }
}