풀이

순열로 해결했다. n이 작아서 가능했다. 순열로 가능한 순서의 모든 banned를 나열하고, 각각에 대해 가능한지 확인하여 문제를 해결했다.

Cod

from itertools import permutations
 
def check(users, banned):
    for u, b in zip(users, banned):
        if len(u) != len(b):
            return False
        for i in range(len(u)):
            if b[i] == "*": continue
            if u[i] != b[i]:
                return False
    return True
 
def solution(user_id, banned_id):
    # banned_id 개수 만큼의 가능한 순열 모두 생성
    # banned_id 하나씩 돌면서 되는 것 체크
    # 모두 가능하면 answer + 1
    answer = []
    permutations_list = permutations(user_id, len(banned_id))
    
    for c in permutations_list:
        if check(c, banned_id):
            answer.append(c)
    ans = []
    for a in list(map(sorted, answer)):
        ans.append("".join(a))
    return len(set(ans))

Reference