본문 바로가기
TIL - 프로그래밍/Python 알고리즘

[프로그래머스] 불량 사용자 - Python

by chaemj97 2023. 3. 2.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/64064

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


    • 풀이
      • ban_ls[i] : banned_id[i]에 해당하는 제제 아이디
        • 아이디의 길이가 같고 '*'을 제외한 나머지가 같은 경우
      • 제제 아이디 목록으로 될 수 있는 모든 경우 구하기
        • product(*list) : 각 요소마다 1개씩 뽑아줌
        • 중복아이디 없고 처음 나오는 목록일 경우 추가!
          • (a,b,c) == (b,c,a)
from itertools import product

def solution(user_id, banned_id):
    ban_ls = []
    for i in banned_id:
    	# 제제 아이디가 될 수 있는 아이디
        l = []
        for j in user_id:
            if len(i) == len(j):
                for k in range(len(i)):
                    if i[k] != '*' and i[k] != j[k]:
                        break
                else:
                    l.append(j)
        ban_ls.append(l)
    
    # 제제 아이디 목록 경우의 수 다 구하기
    answer = []
    for i in product(*ban_ls):
    	# 제제 아이디 목록 내 중복 없는가? + 이미 확인된 목록인가?
        if len(set(i)) == len(ban_ls) and set(i) not in answer:
            answer.append(set(i))
    return len(answer)

 

728x90
반응형

댓글