코딩 테스트
[프로그래머스] 불량 사용자 (Python)
zoodi
2021. 4. 5. 22:36
728x90
1. 문제
programmers.co.kr/learn/courses/30/lessons/64064/solution_groups?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 풀이
1) banned_id 별 user_id에서 일치하는 유저 아이디를 찾아낸다.
*rodo : [frodo, crodo]
2) 2중 포문 (res) 을 돌면서 찾은 유저아이디가 각 내부 리스트에 존재하지 않으면 추가해준다.
기존에 있던 리스트에 추가해주기 위해서 c+user[i] 사용
즉, res의 한 행은 경우의 수가 된다.
이 경우의 수를 찾는 방법을 잘 모르겠어서 다른 사람의 코드를 참고했다. (참조)
3) res 2차원 배열을 돌면서 set을 해주고 answer 리스트에 존재하지 않으면 추가한다.
set을 사용해서 중복되는 경우의 수 제거
3. 코드
def solution(user_id, banned_id):
answer = []
res = [[]]
for ban in banned_id:
li = []
for user in user_id:
if(len(ban) != len(user)):
continue
else:
ok = True
for i in range(len(ban)):
if(ban[i] == '*' or ban[i] == user[i]):
continue
elif(ban[i]!=user[i]):
ok = False
break
if(ok == True):
for c in res:
if user not in c:
li.append(c + [user])
res=li
#print(res)
for s in res:
if set(s) not in answer:
answer.append(set(s))
return len(answer)
참고:
[프로그래머스] 불량 사용자 / Python / 반례
문제주소 :programmers.co.kr/learn/courses/30/lessons/64064 코딩테스트 연습 - 불량 사용자 개발팀 내에서 이벤트 개발을 담당하고 있는 무지는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로
dev-note-97.tistory.com
728x90