프로그래머스
[프로그래머스] Lv.3 불량 사용자 [Python, 파이썬] KAKAO
YoonJuHan
2023. 10. 6. 20:58
- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/64064
- 🔑 정규식, 순열
- 정규식 패턴 작성을 위해 banned_id의 문자 '*'을 '.'으로 변환
- user_id에 대해 순열을 구함 (순열 : 서로 다른 n 개 중 r 개를 골라 순서를 고려해 나열한 경우의 수)
- 각각의 경우의 수에 대해 banned_id에 매칭되는 user_id를 찾음
- 한 리스트에 같은 요소들이 들었지만 순서가 다른 경우 때문에 정렬을 하고 있는지 없는지 검사를 함
import re
from itertools import permutations
def solution(user_id, banned_id):
answer = 0
n = len(user_id)
lst = []
answer = []
for i in range(len(banned_id)):
banned_id[i] = banned_id[i].replace("*", ".")
for i in permutations(user_id, n):
t = []
for b in banned_id:
r = '^' + b + '$'
for j in i:
if re.search(r, j) and j not in t:
t.append(j)
break
t.sort()
if len(banned_id) == len(t) and t not in lst:
lst.append(t)
return len(lst)