Be Coder
불량사용자 본문
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
#include <string> #include <vector> #include <set> #include <algorithm> using namespace std;
bool chk[9]; int result = 0; vector<string> v; set<string> s;
bool same_chk(string banned_id, string user_id){ for(int i = 0; i < banned_id.size(); i++){ if(banned_id.at(i) == '*') user_id.at(i) = '*'; } if(user_id == banned_id) return 1; else return 0; }
void dfs(vector<string> user_id, vector<string> banned_id, int cnt) { if(cnt == banned_id.size()){ vector<string> tmp; tmp = v; string str = ""; sort(tmp.begin(), tmp.end());
for(int i = 0; i < v.size(); i++) str += "|" + tmp[i];
if(s.count(str) == 0) { result++; s.insert(str); } return; }
for(int i = 0; i < user_id.size(); i++){ if(chk[i] == false && banned_id[cnt].size() == user_id[i].size() && same_chk(banned_id[cnt], user_id[i])){ chk[i] = true; v.push_back(user_id[i]); dfs(user_id, banned_id, cnt + 1); v.pop_back(); chk[i] = false; } } }
int solution(vector<string> user_id, vector<string> banned_id) { int answer = 0;
dfs(user_id, banned_id, 0); answer = result;
return answer; } |
cs |
'알고리즘' 카테고리의 다른 글
[프로그래머스] 다트게임 (0) | 2020.05.14 |
---|---|
[프로그래머스] 징검다리 건너기 (0) | 2020.05.05 |
[프로그래머스] 호텔 방 배정 (0) | 2020.05.05 |
튜플 (3) | 2020.04.30 |
수학 - 나머지 연산, GCD, LCM, 진법, 소수 (0) | 2020.04.16 |