728x90
https://school.programmers.co.kr/learn/courses/30/lessons/64064
- 풀이
- ban_ls[i] : banned_id[i]에 해당하는 제제 아이디
- 아이디의 길이가 같고 '*'을 제외한 나머지가 같은 경우
- 제제 아이디 목록으로 될 수 있는 모든 경우 구하기
- product(*list) : 각 요소마다 1개씩 뽑아줌
- 중복아이디 없고 처음 나오는 목록일 경우 추가!
- (a,b,c) == (b,c,a)
- ban_ls[i] : banned_id[i]에 해당하는 제제 아이디
from itertools import product
def solution(user_id, banned_id):
ban_ls = []
for i in banned_id:
# 제제 아이디가 될 수 있는 아이디
l = []
for j in user_id:
if len(i) == len(j):
for k in range(len(i)):
if i[k] != '*' and i[k] != j[k]:
break
else:
l.append(j)
ban_ls.append(l)
# 제제 아이디 목록 경우의 수 다 구하기
answer = []
for i in product(*ban_ls):
# 제제 아이디 목록 내 중복 없는가? + 이미 확인된 목록인가?
if len(set(i)) == len(ban_ls) and set(i) not in answer:
answer.append(set(i))
return len(answer)
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[프로그래머스] 스킬트리 - Python (0) | 2023.03.04 |
---|---|
[백준] 1005. ACM Craft - Python (0) | 2023.03.03 |
[프로그래머스] 삼각 달팽이 - Python (0) | 2023.03.02 |
[프로그래머스] 큰 수 만들기 - Python (0) | 2023.03.02 |
[230228] 소수 구하기(에라토스테네스의 체) - Python (0) | 2023.02.28 |
댓글