[2019 카카오 겨울 인턴십] 불량 사용자

송현아·2021년 8월 31일
0
post-thumbnail

문제 푸는 시간 : 45분
문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/64064

  • 문제 정보

    • 응모자 아이디는 중복되지 않는다.
    • 제재 아이디 목록은 순서는 상관하지 않고, 내용이 동일하면 같은 것으로 취급
    • 제재 아이디 목록은 순서는 상관하지 않고, 내용이 동일하면 같은 것으로 취급
  • 입력

    • user_id : 이벤트 응모자 아이디 목록이 담긴 배열
    • banned_id : 불량 사용자 아이디 목록이 담긴 배열
  • 출력

    • 당첨에서 제외되어야 할 제재 아이디 목록의 경우의 수 return
  • 정답코드

from itertools import product
def compare(value,v):
    if len(value) != len(v):
        return False
    for index, value in enumerate(value):
        if value == "*" or value == v[index]:
            continue
        else:
            return False
    return True

def solution(user_id, banned_id):
    l =[]
    for index, value in enumerate(banned_id):
        stack = []
        for i, v in enumerate(user_id):
            if compare(value, v):
                stack.append(v)
        l.append(stack)
    # 가능한 모든 조합
    l = list(product(*l))
    answer = []
    for i in l : # 중복 원소가 없는 경우만 취급함
        if len(set(i)) == len(banned_id):
             answer.append(tuple(sorted(list(i))))
    return len(set(answer))

user_id, banned_id = ["frodo", "fradi", "crodo", "abc123", "frodoc"], ["*rodo", "*rodo", "******"]
print(solution(user_id, banned_id))

0개의 댓글

관련 채용 정보