https://programmers.co.kr/learn/courses/30/lessons/64064
def str_equal(user_id, banned_id):
if len(user_id) != len(banned_id):
return False
for i in range(len(user_id)):
if user_id[i] == banned_id[i] or banned_id[i] == '*':
continue
else:
return False
return True
def solution(user_id, banned_id):
count = 0
solutions = []
def dfs(user, banned, sol):
if len(banned) == 0:
solutions.append(tuple(sorted(sol)))
return
for i in range(len(user)):
if str_equal(user[i], banned[0]):
temp_b = banned.pop(0)
temp_u = user.pop(i)
sol.append(temp_u)
dfs(user, banned, sol)
sol.remove(temp_u)
user.insert(i, temp_u)
banned.insert(0, temp_b)
dfs(user_id, banned_id, [])
return len(set(solutions))
DFS를 사용하여 해결하였는데, 연습을 많이 해야할 것 같다. banned에 insert 할 때 원래 자리에 insert 안해서 생긴 에러 때문에 시간을 꽤 낭비했다 ㅠ