function solution(user_id, banned_id) {
const set = new Set()
const banIdCopy = banned_id.slice()
const selected = Array.from({length:user_id.length},()=>false)
const isChecked = (bannedId,userId) => {
if(bannedId.length!==userId.length) return false;
else
{for(let i=0;i<bannedId.length;i++){
if(bannedId[i]!=='*'&&bannedId[i]!==userId[i]){
return false
}
}}
return true;
}
//bannedId가 끝날때까지 dfs로 돌면서, 이미 사용한 user_id는 지워줘야함.
const dfs = (banIdCopy, arr = []) => {
if (banIdCopy.length === 0) {
set.add(arr.sort().join(','));
} else {
for (let i = 0; i < user_id.length; i++) {
if (selected[i]) {
continue;
}
if (isChecked(banIdCopy[0],user_id[i])) {
selected[i] = true;
dfs(banIdCopy.slice(1), [...arr, user_id[i]]);
selected[i] = false;
}
}
}
};
dfs(banIdCopy)
return set.size
}