프로그래머스 불량사용자

wook2·2021년 6월 28일
0

알고리즘

목록 보기
12/117

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

처음에 정규표현식을 써야하나 고민을 하다가 시간을 날렸다.
조합을 구해야 한다는 생각은 했지만 조합을 잘 사용하지 못했다.

permutations를 이용해 조합을 구했으니 중복된 원소들의 집합이 존재한다. 그렇기 때문에 ban_list와 순서가 맞지 않으면 건너뛴다는 생각을 하지 못했었던 것이 오답의 원인이었다.

from itertools import permutations
def solution(user_id, banned_id):
    up = list(permutations(user_id,len(banned_id)))
    banlist = []
    for user in up:
        if check(user,banned_id):
            user = set(user)
            if user not in banlist:
                banlist.append(user)
    return len(banlist)

def check(user_list,ban_list):
    for i in range(len(ban_list)):
        if len(ban_list[i]) != len(user_list[i]):
            return False
        for j in range(len(ban_list[i])):
            if ban_list[i][j] == '*':
                continue
            if ban_list[i][j] != user_list[i][j]:
                return False
    return True
profile
꾸준히 공부하자

0개의 댓글