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

이숭인·2021년 8월 29일
0

알고리즘 문제풀이

목록 보기
17/17

문제

불량 사용자 - 문제 바로가기


풀이

  1. 응모자 아이디불량 사용자 가 되어 당첨에서 제외되어야 할 제재 아이디 목록경우의 수 를 구하면 되는 문제

  2. 우선 응모자 아이디 로 만들 수 있는 순열의 개수 를 구함 (불량 사용자 의 수 만큼)

  3. 만들어진 순열의 리스트와불량 이용자 를 비교해서 * 문자를 제외한 나머지 문자가 모두 같으면 매칭되어 정답 리스트에 넣기

  4. 정답 리스트의 개수를 return



코드

입출력 예


from itertools import permutations

def isMatch(permu_ids, banned_ids):
    for i in range(len(permu_ids)):
        # 길이가 다르다면
        if len(permu_ids[i])!=len(banned_ids[i]):
            return False
        for j in range(len(permu_ids[i])):
            # * 표시면 다음으로 넘어가서 비교
            if banned_ids[i][j]=='*':
                continue
            # 대조햇을때 다르면 false
            if permu_ids[i][j]!=banned_ids[i][j]:
                return False
    return True
    
def solution(user_id, banned_id):
    answer = []

    for permu_ids in permutations(user_id, len(banned_id)):
        if isMatch(permu_ids, banned_id):
            permu_ids = set(permu_ids) # 중복 제거
            if permu_ids not in answer:
                answer.append(permu_ids)
                
    return len(answer)

permutation 예시

profile
iOS Developer

0개의 댓글