Algorithm & Data Structures/Programers
Lv 3. 불량사용자 (Java)
Geisha
2023. 10. 25. 21:12
import java.util.Arrays;
import java.util.HashSet;
public class Solution {
static boolean[] check;
static HashSet<String> set;
public static int solution(String[] user_id, String[] banned_id) {
check = new boolean[user_id.length];
set = new HashSet<String>();
for(int i=0; i<banned_id.length; i++)
banned_id[i] = banned_id[i].replace('*', '.');
back(0,"",banned_id,user_id);
return set.size();
}
public static void back(int d, String res, String[] banned_id, String[] user_id) {
if(d==banned_id.length) {
String[] arr = res.split(" ");
Arrays.sort(arr);
String str="";
for(String s:arr) str+=s;
set.add(str);
return;
}
for(int i=0; i<user_id.length; i++) {
if(check[i] || !user_id[i].matches(banned_id[d])) continue;
check[i]=true;
back(d+1,user_id[i]+" "+res,banned_id,user_id);
check[i]=false;
}
}
}