본문 바로가기

PS/프로그래머스

[프로그래머스 LV 3] 불량 사용자 (파이썬/python)

728x90

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

 

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

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

programmers.co.kr

 

 

n의 갯수제한을 보고 완전탐색으로 풀면 되겠구나 싶었다.

순열을 사용해 모든 조합을 뽑아내고 답이 될 수 있는지 검사한다.

 

만약 답이 될 수 있는 선택지라면 set을 이용해 순서와 중복이 없는 상태로 만들어서

answer 리스트안에 있는지 확인한다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
from itertools import permutations
 
 
def match(user, banned_id):
    for i in range(len(user)):
        if len(user[i]) == len(banned_id[i]):
            for j in range(len(user[i])):
                if user[i][j] != banned_id[i][j]:
                    if banned_id[i][j] == '*':
                        continue
                    else:
                        return False
        else:
            return False
    return True
 
 
def solution(user_id, banned_id):
    answer = []
 
    for banned_user in permutations(user_id, len(banned_id)):
        if match(banned_user, banned_id):
            banned_user = set(banned_user)
            if banned_user not in answer:
                answer.append(banned_user)
 
 
    return len(answer)
cs
728x90