[파이썬] 프로그래머스 : 불량 사용자 (Lv.3)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
방향성 생각
- 케이스 수 매우 적다. 완탐으로 탐색
- 두 문자열을 비교한다. 길이가 같아야 하고, 모든 위치에서 알파벳이 같아야함.
- *있으면 그 위치는 패스
- answer라는 set에 저장하려면 집합은 안된다. 튜플로 넣는다.
- 튜플에서는 순서가 보장되니 같은 군집이라도 다르게 표현되므로 정렬을 해서 저장
전체코드
from itertools import permutations as P
def solution(user_id, banned_id):
def check(user, ban):
if len(user) != len(ban):
return False
for a,b in zip(user,ban):
if b != '*' and a != b:
return False
return True
answer = set()
for temp in P(user_id,len(banned_id)):
flag = True
for user,ban in zip(temp,banned_id):
if not check(user,ban):
flag = False
break
if flag:
answer.add(tuple(sorted(temp)))
return len(answer)
코멘트
처음에는 트라이처럼 풀어보려고 했는데 브루트포스가 나은거같아서 완탐으로 진행
'Algorithm > etc' 카테고리의 다른 글
[파이썬] 백준 1234 : 크리스마스 트리 (골드2) (0) | 2023.11.05 |
---|---|
[파이썬] 백준 17825 : 주사위 윷놀이 (골드2) (0) | 2023.10.22 |
[파이썬] 백준 14391 : 종이 조각 (골드3) (0) | 2023.10.22 |
[파이썬] 백준 1749 : 점수따먹기 (골드4) (0) | 2023.09.11 |
[파이썬] 백준 18428 : 감시피하기 (골드5) (0) | 2023.08.31 |
[파이썬] 백준 10836 : 여왕벌 (골드4) (0) | 2023.08.31 |
[파이썬] 프로그래머스 : 추석 트래픽 (Lv.3) (0) | 2023.08.28 |
댓글