반응형
programmers.co.kr/learn/courses/30/lessons/64064
코딩테스트 연습 - 불량 사용자
개발팀 내에서 이벤트 개발을 담당하고 있는 무지는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량
programmers.co.kr
def solution(user_id, banned_id):
answer = []
if len(user_id) == len(banned_id): # user의 수와 ban_id 수가 같으면 모두 불량 사용자인 1가지 경우임
return 1 # 이 코드가 없으면 한 가지 test case에서 시간초과가 발생함..
def equal(n1, n2): # *처리된 banned_id와 user_id가 일치될 수 있는지 판단하는 함수
if len(n1) != len(n2):
return False
for i, j in zip(n1, n2):
if i == '*' or j == '*':
continue
if i != j:
return False
return True
def search(remain_user, remain_banned):
# 사용자들과 불량사용자들을 모두 매치시킨 경우, 정상 사용자들의 경우를 중복 없이 저장
if remain_banned == [] and remain_user not in answer:
answer.append(remain_user)
return
for ban_id in remain_banned:
for us_id in remain_user:
if equal(us_id, ban_id):
temp1 = remain_user[:]
temp2 = remain_banned[:]
temp1.remove(us_id)
temp2.remove(ban_id)
search(temp1, temp2)
search(user_id, banned_id)
return len(answer) # 정상으로 판단된 사용자 경우의 수 = 불량으로 판단된 사용자 경우의 수 이므로,
→ 더 좋은 방법이 많을것 같음. 추후에 방법이 생각나면 다시 구현해보자
반응형