비밀번호의 일부분을 알고 있다는 전제 하에 모든 비밀번호 조합의 개수를 찾는 브루트포스 문제.
모든 비밀번호를 쭉 나열한 다음, 조건을 만족하는 비밀번호가 등장할 때마다 count해주면 된다.
#include <iostream>
#include <vector>
using namespace std;
vector<pair<int,bool>> vec;
int n, m, temp;
bool visited[8];
int answer[8];
int result;
void print() {//디버깅
for (int i = 0; i < n; i++) {
cout << answer[i] << " ";
}
cout << "\n";
}
void chk() {
int count = 0;
for (int i = 0; i < m; i++)
vec[i].second = false;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (answer[i] == vec[j].first && !vec[j].second) {
count++;
vec[j].second = true;
}
}
}
if (count == m)result++;
}
void bfc(int index) {
if (index == n) {
//print();
chk();
return;
}
for (int i = 0; i < 10; i++) {
answer[index] = i;
bfc(index + 1);
}
}
int main() {
cin >> n >> m;
for (int i = 0; i < m; i++) {
cin >> temp;
vec.push_back(make_pair(temp,false));
}
bfc(0);
cout << result;
return 0;
}
'코딩문제 풀이' 카테고리의 다른 글
4963번 섬의 개수 (0) | 2020.02.10 |
---|---|
11727번 2xn 타일링 2 (0) | 2020.02.07 |
17144번 미세먼지 안녕! (0) | 2020.01.30 |
14891번 톱니바퀴 (0) | 2020.01.21 |
14888번 연산자 끼워넣기 (0) | 2020.01.17 |