Algorithm/BOJ
백준 6603번 C++
poopooreum
2023. 8. 21. 14:13
반응형
백준 6603번 로또
https://www.acmicpc.net/problem/6603
6603번: 로또
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로
www.acmicpc.net




정답 코드
#include<iostream>
using namespace std;
int arr[13];
int arr2[14];
int n, m;
void abc(int a, int b);
int main() {
while (1){
cin >> n;
if (n == 0)
break;
for (int x = 0; x < n; x++)
cin >> arr[x];
abc(0, 0);
cout<<"\n";
}
}
void abc(int a, int b) {
if (a == 6) {
for (int x = 0; x < 6; x++)
cout << arr2[x] << " ";
cout << "\n";
return;
}
for (int x = b; x < n; x++) {
arr2[a] = arr[x];
abc(a + 1, x + 1);
}
}
문제 풀이
백트래킹을 이용해서 풀었습니다. 백트래킹을 쉽게 생각해보면 경우의 수를 트리 구조로 나열했을때 가장 아래에 있는 자식트리를 하나씩 출력해준다고 생각하면 될 것 같아요. 느낌은 N과M문제랑 비슷했어요. 백트래킹도 알고리즘 정리해서 게시물로 올려볼게요.
반응형