728x90
📌 문제
https://programmers.co.kr/learn/courses/30/lessons/64064
📌 문제 접근 방법
- banned_id를 하나씩 순회하며 banned_id가 될 수 있는 후보 리스트를 able_banned에 저장했다.
- 후보 리스트를 하나씩 순회하며 재귀를 이용해서 불량 사용자 리스트를 만들었다.
- 중복을 체크해주기 위해서 sort한 후 answer에 저장했다.
- 불량 사용자 리스트의 경우의 수가 저장된 answer의 길이를 반환한다.
📌 코드
# 프로그래머스 불량 사용자
def is_same(id1, id2):
for i in range(len(id1)):
if id1[i] == '*':
pass
elif id1[i] != id2[i]:
return False
return True
def solution(user_id, banned_id):
able_banned = []
for b_id in banned_id:
temp = []
for u_id in user_id:
if len(b_id) == len(u_id) and is_same(b_id, u_id):
temp.append(u_id)
able_banned.append(temp)
N = len(able_banned)
answer = []
def pick_id(n, temp):
if n == N:
temp.sort()
if temp not in answer:
answer.append(temp)
return
for id in able_banned[n]:
if n == 0:
pick_id(n+1, [id])
elif id not in temp:
pick_id(n+1, temp+[id])
pick_id(0, [])
return len(answer)
728x90
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[PG/Python] 가장 먼 노드 (0) | 2021.12.09 |
---|---|
[PG/Python] 기능개발 (0) | 2021.12.09 |
[PG/Python] 큰 수 만들기 (0) | 2021.12.02 |
[PG/Python] 멀쩡한 사각형 (0) | 2021.12.01 |
[PG/Python] 괄호 변환 (0) | 2021.11.30 |
댓글