프로그래머스

[프로그래머스] 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)