주어진 유저 아이디 중 제재된 수만큼 경우의 수를 골라보자. 순열을 통해 "어떤 아이디가 제재되었는지" 그 리스트를 만들어낸다. 이 리스트의 원소 하나씩 확인하면서 과연 진정 '제재 아이디'와 매치가 되는지 확인한다. 매치가 되는 경우는 '안 되는 경우'를 모두 배제한 경우이다.
from itertools import permutations
def is_matched(users,banned_id):
if len(users) != len(banned_id): return False
for user, ban in zip(users, banned_id):
if len(user) != len(ban): return False
for u, b in zip(user, ban):
if b == '*': continue
elif u != b: return False
return True
def solution(user_id, banned_id):
user_cases = list(permutations(user_id,len(banned_id)))
result = []
for users in user_cases:
if is_matched(users, banned_id):
users = set(users)
if users not in result:
result.append(users)
return len(result)