문제 설명 및 제한사항
아이디어 및 해결 방법
코드
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)
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges