티스토리 뷰
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으로 감싸줘서 중복을 제거해줬다.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Level2, 배달 (Python) (0) | 2021.09.13 |
---|---|
[프로그래머스] Level2, 수식최대화 (Python) (0) | 2021.09.10 |
[프로그래머스] Level2, 거리두기 확인하기 (Python) (0) | 2021.08.25 |
[프로그래머스] Level3, 자물쇠와 열쇠 (Python) (0) | 2021.08.10 |
[프로그래머스] Level3, 합승 택시 요금 (Python) (0) | 2021.08.10 |
댓글