title: "[프로그래머스] 불량 사용자 Python 파이썬 해설 (Level 3) - 이도훈"
cleanUrl: "programmers/64064"
description: "프로그래머스 Level 3 문제 [불량 사용자]의 풀이를 정리합니다."
import re
from collections import Counter
ans = set()
def match(u, b):
return re.fullmatch(b, u) is not None
def find(user_id, banned_id, i, state):
global ans
# banned_id[i]를 매치시켜봅니다.
if i == len(banned_id):
ans.add( tuple(sorted(state)) )
return
for u in user_id:
if match(u, banned_id[i]):
new_user_id = user_id[:]; new_user_id.remove(u)
state.append(u)
find(new_user_id, banned_id, i+1, state)
state.pop()
def solution(user_id, banned_id):
# regular expression이 매치되는지 안되는지 여부를 가지고
# 퇴각검색을 활용합니다.
banned_id = [b.replace('*', '.') for b in banned_id]
find(user_id, banned_id, 0, [])
return len(ans)
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges