[프로그래머스] 불량 사용자 Python 파이썬

0

Problem Solving

목록 보기
1/49
post-thumbnail

문제

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

풀이

  1. permutations를 사용해 ban 리스트길이만큼 경우의수를 뽑는다
  2. join한 ban리스트와, join한 경우의 수를 정규식으로 비교한다. (*를 모든 종류의 문자 1개를 뜻하는 .로 replace해줘야 한다. \w도 가능할듯)
  3. sort와 set으로 순서만 다른 중복을 제거해준다.

/ 는 조인할때 문자열 구분해주기 위한 것으로, 정규식 문법과 관련없습니다. 안해주면 틀리는 경우 나와서 넣어주었습니다

import re
from itertools import permutations
def solution(user_id, banned_id):
	ban = '/'.join(banned_id).replace('*','.')
    answer = set()
    for i in permutations(user_id, len(banned_id)):
        if re.fullmatch(ban, '/'.join(i)):
            answer.add(''.join(sorted(i)))
    return len(answer)

0개의 댓글