for (String ban : banned_id) {
ArrayList<String> temp = new ArrayList<>();
for (String user : user_id) {
if (user.length() != ban.length()) {
continue;
} else if (Pattern.matches(ban.replace('*', '.'), user)) {
temp.add(user);
}
}
arr.add(temp);
}
temp는 불량사용자의 패턴과 유사한 리스트가 담기고 arr에는 불량 사용자를 조합할 수 있는 리스트가 생성됩니다.
private static void dfs(HashSet<String> s, int depth) {
if (depth == arr.size()) {
answer.add(new HashSet<>(s));
return;
}
for (String user : arr.get(depth)) {
if (s.add(user)) {
dfs(s, depth + 1);
s.remove(user);
}
}
}
조합 할 수 있는 리스트를 개수만큼 생성합니다.