티스토리 뷰
728x90
반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/64064?language=python3
코드
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 |
댓글