https://school.programmers.co.kr/learn/courses/30/lessons/64064?language=cpp
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
#include <string>
#include <vector>
#include <set>
using namespace std;
bool isEqual(string user_id, string banned_id){
if(user_id.size()!=banned_id.size()) return false;
for(int i=0;i<user_id.size();i++){
if(banned_id[i]!='*' && banned_id[i]!=user_id[i]){
return false;
}
}
return true;
}
void dfs(int depth, vector<string>& user_id, vector<string>& banned_id,
vector<bool>& visited, set<string>& result) {
if(depth == banned_id.size()) {
string temp = "";
for(int i=0; i<visited.size(); i++) {
if(visited[i]) temp += to_string(i);
}
result.insert(temp);
return;
}
for(int i=0; i<user_id.size(); i++) {
if(!visited[i] && isEqual(user_id[i], banned_id[depth])) {
visited[i] = true;
dfs(depth+1, user_id, banned_id, visited, result);
visited[i] = false;
}
}
}
int solution(vector<string> user_id, vector<string> banned_id) {
vector<bool> visited(user_id.size(), false);
set<string> result;
dfs(0, user_id, banned_id, visited, result);
return result.size();
}
'Algorithm' 카테고리의 다른 글
[프로그래머스] 두 큐 합 같게 만들기 (0) | 2024.12.23 |
---|---|
[코드트리] 숫자 빠르게 찾기 (0) | 2024.12.20 |
[코드트리] 최소값 3개 (0) | 2024.12.19 |
[코드트리] 마지막으로 남은 숫자 (0) | 2024.12.18 |
[코드트리] 가장 가까운 점 (0) | 2024.12.17 |
https://school.programmers.co.kr/learn/courses/30/lessons/64064?language=cpp
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
#include <string>
#include <vector>
#include <set>
using namespace std;
bool isEqual(string user_id, string banned_id){
if(user_id.size()!=banned_id.size()) return false;
for(int i=0;i<user_id.size();i++){
if(banned_id[i]!='*' && banned_id[i]!=user_id[i]){
return false;
}
}
return true;
}
void dfs(int depth, vector<string>& user_id, vector<string>& banned_id,
vector<bool>& visited, set<string>& result) {
if(depth == banned_id.size()) {
string temp = "";
for(int i=0; i<visited.size(); i++) {
if(visited[i]) temp += to_string(i);
}
result.insert(temp);
return;
}
for(int i=0; i<user_id.size(); i++) {
if(!visited[i] && isEqual(user_id[i], banned_id[depth])) {
visited[i] = true;
dfs(depth+1, user_id, banned_id, visited, result);
visited[i] = false;
}
}
}
int solution(vector<string> user_id, vector<string> banned_id) {
vector<bool> visited(user_id.size(), false);
set<string> result;
dfs(0, user_id, banned_id, visited, result);
return result.size();
}
'Algorithm' 카테고리의 다른 글
[프로그래머스] 두 큐 합 같게 만들기 (0) | 2024.12.23 |
---|---|
[코드트리] 숫자 빠르게 찾기 (0) | 2024.12.20 |
[코드트리] 최소값 3개 (0) | 2024.12.19 |
[코드트리] 마지막으로 남은 숫자 (0) | 2024.12.18 |
[코드트리] 가장 가까운 점 (0) | 2024.12.17 |