반응형
포인트
- 불량 사용자의 경우의 수를 찾는 프로그램을 만들어야 합니다. 전체적으로 데이터가 있고 불량 사용자가 있는 경우들을 표시합니다. 각각의 경우를 계산하여 구하고자 하는 경우를 찾아야 합니다.
🧶문서는 항상 수정될 수 있습니다. 비판은 환영합니다.
python
from collections import defaultdict
from itertools import product
def check(string1: str, string2: str) -> bool:
if len(string1) != len(string2):
# 길이가 다르면 False
return False
for i in range(len(string1)):
if string1[i] == "*":
# * 이 나오면 통과
continue
if string1[i] != string2[i]:
# 다른게 하나라도 있으면 False
return False
# 다 통과하면 True
return True
def solution(user_id, banned_id):
mapper = defaultdict(list)
# 각각의 배열을 저장하기 위한 딕셔너리
for index, ban in enumerate(banned_id):
for user in user_id:
if check(ban, user):
mapper[str(index) + ban].append(user)
# 중복될 수 있기 때문에 순서와 같이 저장
result = []
for value in mapper.values():
# 각각의 배열의 프로덕트를 하기 위한 처리
result.append(value)
products = list(product(*result))
answer = set()
for target in products:
if len(set(target)) == len(banned_id):
# 크기가 같으면 조합으로 인정
answer.add("".join(sorted(target)))
return len(answer)
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘] Maximum Subarray + 배열에서 부분 최대합을 구하는 방법 (0) | 2021.05.17 |
---|---|
[알고리즘] 길 찾기 게임 (0) | 2021.05.07 |
[알고리즘] 방금그곡 (0) | 2021.05.05 |
[알고리즘] 후보키 (0) | 2021.05.05 |
[알고리즘] 파일명 정렬 (0) | 2021.05.04 |
댓글