출처 : 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 == 0) return 0;
else {
for (int i = 0; i < K; i++) scanf("%d", &input[i]);
dfs(0, 0);
printf("\n");
}
}
}
|
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준/boj.kr] 21939번 문제 추천 시스템 Version1(JAVA) (0) | 2022.04.17 |
---|---|
[백준/boj.kr] 6198번 옥상 정원 꾸미기(JAVA) (0) | 2022.04.12 |
[백준/boj.kr] 5585번 거스름돈 (C/C++, JAVA) (0) | 2022.03.15 |
[백준/boj.kr] 2748번 피보나치 수 2 (C/C++, JAVA) (0) | 2022.03.15 |