응모자 아이디
중 불량 사용자
가 되어 당첨에서 제외되어야 할 제재 아이디 목록
의 경우의 수 를 구하면 되는 문제
우선 응모자 아이디
로 만들 수 있는 순열의 개수 를 구함 (불량 사용자
의 수 만큼)
만들어진 순열의 리스트와불량 이용자
를 비교해서 *
문자를 제외한 나머지 문자가 모두 같으면 매칭되어 정답 리스트에 넣기
정답 리스트의 개수를 return
from itertools import permutations
def isMatch(permu_ids, banned_ids):
for i in range(len(permu_ids)):
# 길이가 다르다면
if len(permu_ids[i])!=len(banned_ids[i]):
return False
for j in range(len(permu_ids[i])):
# * 표시면 다음으로 넘어가서 비교
if banned_ids[i][j]=='*':
continue
# 대조햇을때 다르면 false
if permu_ids[i][j]!=banned_ids[i][j]:
return False
return True
def solution(user_id, banned_id):
answer = []
for permu_ids in permutations(user_id, len(banned_id)):
if isMatch(permu_ids, banned_id):
permu_ids = set(permu_ids) # 중복 제거
if permu_ids not in answer:
answer.append(permu_ids)
return len(answer)