상상쓰

[프로그래머스] 불량 사용자 본문

Coding Test

[프로그래머스] 불량 사용자

상상쓰 2021. 6. 8. 15:27

 

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

 

코딩테스트 연습 - 불량 사용자

개발팀 내에서 이벤트 개발을 담당하고 있는 "무지"는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량

programmers.co.kr

 

불량 사용자 아이디의 해당하는 사용자 아이디의 목록을 가지고 간단히 풀 수 있을 것으로 생각했는데 중복된 값 때문에 결국 데카트르 곱과 set() 을 이용하여 실제 제재 아이디 목록을 구하여 그 목록의 개수를 return 하였다. 

 

최근 파이썬 문법을 공부하고 있는데 filter 한 번 써봤다.

 

from itertools import product

def solution(user_id, banned_id):
    answer = 0
    array = []
    
    for i in banned_id:
        array.append(list(filter(lambda x : banned_id_check(x, i), user_id)))
    
    banned_id_list = list(product(*array))
    answer_id_list = set()
    
    for i in banned_id_list:
        if len(i) == len(set(i)):
            answer_id_list.add(''.join(sorted(i)))
    
    answer = len(answer_id_list)
        
    return answer
    
def banned_id_check(user_id, banned_id):
    answer = True

    if len(user_id) == len(banned_id):
        for  i in range(len(user_id)):
            if banned_id[i] != '*' and user_id[i] != banned_id[i]:
                answer = False
                break
    else:
        answer = False

    return answer
    
print(solution(['frodo', 'fradi', 'crodo', 'abc123', 'frodoc'],	['fr*d*', 'abc1**'])) # 2

'Coding Test' 카테고리의 다른 글

[백준] 주유소  (0) 2021.06.08
[프로그래머스] 수식 최대화  (0) 2021.06.08
[프로그래머스] 경주로 건설  (0) 2021.06.07
[프로그래머스] 보석 쇼핑  (0) 2021.06.07
[백준] 단어 수학  (0) 2021.06.06
Comments