문제 : https://programmers.co.kr/learn/courses/30/lessons/64064?language=python3

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

▶ 코드

import re
from itertools import product

def solution(user_id, banned_id):
    # 1.정규표현식 매칭하기 
    my =[]
    for p in banned_id:
        temp = []
        p = p.replace('*','.')
        for a in user_id:
            res = bool(re.match(p, a))
            if (res and len(p)==len(a)):
                temp.append(a)
        my.append(temp)
    #print(my)

    # 2.조합 구하기 
    lst = list(product(*my))
    #print(lst)

    answer = []
    for a in lst:
        if len(a) == len(set(a)):
            tmp_lst = list(a)
            tmp_lst.sort()
            #print(tmp_lst)
            if tmp_lst not in answer:
                answer.append(tmp_lst)

    #print(len(answer))
    return len(answer)
    
#solution(["frodo", "fradi", "crodo", "abc123", "frodoc"],["fr*d*", "abc1**"])
#solution(["frodo", "fradi", "crodo", "abc123", "frodoc"], ["*rodo", "*rodo", "******"])