Programmers - 불량 사용자

SJ0000·2022년 6월 13일

문제 링크

각각 불량사용자에 속할 수 있는 id들을 list로 저장하고
search()에서 가능한 모든 경우의 수를 탐색

answer_set = set()


def is_possible(uid, bid):
    if len(uid) != len(bid):
        return False

    for (a, b) in zip(uid, bid):
        if b == '*':
            continue
        if a != b:
            return False
    return True


def search(targets, index, selected):
    global count
    if index == len(targets):
        answer_set.add(tuple(sorted(list(selected))))
        # print(selected)
        return

    for target in targets[index]:
        if target in selected:
            continue
        selected.add(target)
        search(targets, index+1, selected)
        selected.remove(target)


def solution(user_id, banned_id):
    global answer_set
    targets = []
    for bid in banned_id:
        target = []
        for (index, uid) in enumerate(user_id):
            if is_possible(uid, bid):
                target.append(index)
        targets.append(target)

    # print("targets = ", targets)
    search(targets, 0, set())
    # print(answer_set)
    return len(answer_set)
profile
잘하고싶은사람

0개의 댓글