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 |