티스토리 뷰

728x90
반응형

문제

https://programmers.co.kr/learn/courses/30/lessons/64064?language=python3 

 

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

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

programmers.co.kr

 

코드

from itertools import permutations
def solution(user_id, banned_id):
    answer = 0
    per = list(permutations(user_id, len(banned_id)))
    result = []
    demo = []
    def check(a,b):
        for x,y in zip(a,b):
            if len(x) == len(y):
                for i,j in zip(x,y):
                    if i != j:
                        if j != '*':
                            return False
            else:
                return False
        return True
    
    for i in per:
        if check(i, banned_id):
            if set(i) not in result:
                result.append(set(i))
    
    return len(result)

 

permutations를 이용해 찾고자 하는 banned_id 길이만큼 순열을 구해 banned_id와 비교하여 가능한 것들만 찾는다.

 

모든 순열을 돌면서 순열과 banned_id를 비교하여 같은 값을 찾는다.

모든 순열을 돌기 때문에 현재 인덱스와 같은 banned_id만 비교하면 된다.

 

정답에서는 리스트안에 값이 순서는 다르더라도 값이 모두 같다면 같은 값으로 취급하기 때문에 set으로 감싸줘서 중복을 제거해줬다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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 29 30