🖇️ 문제 링크
📝 문제 분석
불량 사용자 목록에 매칭되는 유저들의 조합의 개수를 찾는 문제입니다.
비트마스킹으로 조합 중복 체크를 하고, 정규식을 사용해서 유저 아이디가 패턴과 매칭하는 여부를 판별했습니다.
⌨️ 코드
import java.util.*;
import java.util.regex.*;
class Solution {
int ans = 0;
boolean[] chk = new boolean[1 << 8];
String[] patterns;
public int solution(String[] user_id, String[] banned_id) {
patterns = Arrays.stream(banned_id)
.map(s -> s.replace("*", "."))
.toArray(String[]::new);
solve(0, 0, user_id);
return ans;
}
public void solve(int cnt, int visit, String[] user_id) {
if(cnt == patterns.length) {
if(!chk[visit]) {
chk[visit] = true;
ans++;
}
return;
}
for(int i = 0; i < user_id.length; i++) {
if((visit & (1 << i)) == 0 && user_id[i].matches(patterns[cnt]))
solve(cnt + 1, visit | (1 << i), user_id);
}
}
}
Uploaded by Notion2Tistory v1.1.0