dfs, 문자열
const set = new Set();
function dfs(arr, visited, cur, limit, tmp){
if(cur === limit) {
set.add(tmp.sort().toString());
return;
}
for (let i = 0; i < arr[cur].length; i+=1){
if (!visited[arr[cur][i]]){
visited[arr[cur][i]] = 1;
dfs(arr, visited, cur+1, limit, tmp.concat([arr[cur][i]]))
visited[arr[cur][i]] = 0;
}
}
}
function solution(user_id, banned_id) {
const arr = [];
for (let i = 0; i < banned_id.length; i+=1){
const banned = banned_id[i];
const tmp = [];
for (let j = 0; j < user_id.length; j+=1){
const id = user_id[j];
let flag = true;
if(banned.length !== id.length) continue;
for (let k = 0; k < banned.length; k+=1){
if (banned[k]==='*') continue;
else if(banned[k] !== id[k]) {
flag = false;
break;
}
}
if(flag) tmp.push(j);
}
arr.push(tmp);
}
const visited = new Array(user_id.length).fill(0);
dfs(arr,visited ,0, banned_id.length, []);
return set.size;
}