문제 푸는 시간 : 45분
문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/64064
- 응모자 아이디는 중복되지 않는다.
- 제재 아이디 목록은 순서는 상관하지 않고, 내용이 동일하면 같은 것으로 취급
- 제재 아이디 목록은 순서는 상관하지 않고, 내용이 동일하면 같은 것으로 취급
from itertools import product
def compare(value,v):
if len(value) != len(v):
return False
for index, value in enumerate(value):
if value == "*" or value == v[index]:
continue
else:
return False
return True
def solution(user_id, banned_id):
l =[]
for index, value in enumerate(banned_id):
stack = []
for i, v in enumerate(user_id):
if compare(value, v):
stack.append(v)
l.append(stack)
# 가능한 모든 조합
l = list(product(*l))
answer = []
for i in l : # 중복 원소가 없는 경우만 취급함
if len(set(i)) == len(banned_id):
answer.append(tuple(sorted(list(i))))
return len(set(answer))
user_id, banned_id = ["frodo", "fradi", "crodo", "abc123", "frodoc"], ["*rodo", "*rodo", "******"]
print(solution(user_id, banned_id))