boj 6603 로또
숫자를 입력 받아 지정하고 그 갯수의 숫자 중 가능한 6개 조합을 모두 출력해야하는 문제이다. 백트레킹 기법을 이용하여 문제를 해결했다.
#include <iostream>
#include <vector>
using namespace std;
int k;
vector <int> s;
vector <int> l;
void func(int num)
{
if (s.size() == 6)
{
for (int i = 0; i < 6; i++)
cout << s[i] << ' ';
cout << '\n';
return;
}
for (int i = num; i < k; i++)
{
s.push_back(l[i]);
func(i + 1);
s.pop_back();
}
}
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
while (cin >> k && k != 0)
{
l = vector <int>(k);
for (int i = 0; i < k; i++) cin >> l[i];
func(0);
cout << '\n';
}
}
백트래킹 기법의 재귀적인 부분이 이해는 되지만 크게 와닿지는 않는다. 조금 더 공부해야할 필요성을 느낀다.
'PS > BOJ' 카테고리의 다른 글
BOJ 11726 2xN 타일링 (0) | 2021.06.28 |
---|---|
BOJ 1920 수 찾기 (0) | 2021.06.26 |
BOJ 2667 단지번호붙이기 (0) | 2021.06.25 |
BOJ 11652 카드 (0) | 2021.06.25 |
BOJ 1931 회의실 배정 (0) | 2021.06.23 |