본문 바로가기
PS

[Progammers] Python 프로그래머스 모음사전(84512)

by 1223v 2024. 11. 3.

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

해시와 dfs를 조합하는 백트래킹 문제이다.

문자열을 해시로 저장하여 만약 해당 문자열이 있는 경우 방문처리를 하여 조건에 걸리지 않도록 중복없는 완전탐색을 진행

cnt = 0
result = 0
text = ""
s_dict = {}
def dfs(n, s):
    global cnt, result, text

    if s == text:
        result = cnt
        return

    if len(s) == 5:
        return

    elif result == 0:
        for i in ["A", "E", "I", "O", "U"]:

            if s+i not in s_dict:
                
                s_dict[s+i] = 1
                cnt += 1
                dfs(n + 1, s + i)

def solution(word):
    global text
    text = word

    dfs(0,"")
    return result

 

 

회고.

딕셔너리와 defaultdict를 더욱 원활하게 사용할 수 있도록 해시를 더 다듬을 필요가 있어보임

댓글