320x100
https://school.programmers.co.kr/learn/courses/30/lessons/64064
순열을 이용하여 banned_id의 길이에 맞춰 user_id로부터 모든 순열 조합을 뽑아낸다.
그리고 조합 속 이름을 순서에 따라 조건을 따지면 된다.
순열로 뽑은 튜플 "user"와 banned_id가 같은 경우의 수인지 따지는 함수 ox()를 새로 정의했다.
from itertools import permutations
def same(user, banned_id):
for word in range(len(user)):
if len(user[word]) != len(banned_id[word]): #1. 길이 check
return False
for alpha in range(len(banned_id[word])):
if banned_id[word][alpha] == '*' or user[word][alpha] == banned_id[word][alpha]: # '*'이거나 문자가 같은 경우
continue
else: # 하나라도 다르면 False
return False
return True
def solution(user_id, banned_id):
user_per = list(permutations(user_id,len(banned_id)))
banned_list = []
# 하나의 튜플과 banned_id 비교
for user in user_per:
if same(user,banned_id):
T = set(user)
if T not in banned_list:
banned_list.append(T)
else:
continue
return len(banned_list)
'코딩테스트' 카테고리의 다른 글
[파이썬] 3진법 뒤집기 - 월간 코드 챌린지 시즌1 [CODING TEST #34] (0) | 2022.08.02 |
---|---|
[파이썬] 로또의 최고 순위와 최저 순위 - 2021 Dev-Matching: 웹 백엔드 개발자(상반기) [CODING TEST #33] (0) | 2022.08.02 |
[파이썬] 행렬의 곱셈 [CODING TEST #31] (0) | 2022.08.01 |
[파이썬] 이진 변환 반복하기 - 월간 코드 챌린지 시즌1 [CODING TEST #30] (0) | 2022.07.31 |
[파이썬] 주차 요금 계산 - 2022 KAKAO BLIND RECRUITMENT [CODING TEST #29] (0) | 2022.07.31 |
댓글