[programmers/py] 불량 사용자

승민·2024년 3월 24일

알고리즘

목록 보기
85/171

불량 사용자

https://school.programmers.co.kr/learn/courses/30/lessons/64064

문제 설명

  • user_id와 불량 사용자 아이디 목록이 담긴 배열 banned_id가 매개변수로 주어질 때, 당첨에서 제외되어야 할 제재 아이디 목록은 몇가지 경우의 수가 가능한 지 return 하도록 solution 함수를 완성해주세요.

문제 풀이

  • *.으로 변경 후 정규 표현식 사용
  • permutations로 순열을 사용
import re
from itertools import permutations 

def solution(user_id, banned_id):
    n = len(banned_id)
    banned_id = [i.replace("*", ".") for i in banned_id]
    answer = []
    for i in permutations(user_id, n):
        lst = list(i)
        
        flag = True
        for j in range(n):
            if re.match(banned_id[j], lst[j]) and (len(banned_id[j]) == len(lst[j])) :
                continue 
            else:
                flag = False
                break
        if flag:
            if sorted(lst) not in answer:
                answer.append(sorted(lst))

    return len(answer) 

0개의 댓글