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

cotato·2021년 5월 7일
0

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

My Solution

def str_equal(user_id, banned_id):
    if len(user_id) != len(banned_id):
        return False
    
    for i in range(len(user_id)):
        if user_id[i] == banned_id[i] or banned_id[i] == '*':
            continue
        else:
            return False

    return True


def solution(user_id, banned_id):
    count = 0
    solutions = []
    def dfs(user, banned, sol):
        if len(banned) == 0:
            solutions.append(tuple(sorted(sol)))
            return
        
        for i in range(len(user)):
            if str_equal(user[i], banned[0]):
                temp_b = banned.pop(0)
                temp_u = user.pop(i)
                sol.append(temp_u)
                dfs(user, banned, sol)
                sol.remove(temp_u)
                user.insert(i, temp_u)
                banned.insert(0, temp_b)
                    
    dfs(user_id, banned_id, [])
    
    return len(set(solutions))

DFS를 사용하여 해결하였는데, 연습을 많이 해야할 것 같다. banned에 insert 할 때 원래 자리에 insert 안해서 생긴 에러 때문에 시간을 꽤 낭비했다 ㅠ

profile
coding_potato

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN