알고리즘

[Python | 프로그래머스 | Lv_2] 모음사전

deedee2 2024. 7. 24. 16:25
728x90

😉 아이디어

1. _!A ~ UUUUU!_까지의 DFS 실행

2. 중간에 목표로 하는 단어와 일치하는 경우 count 횟수 저장

😉 풀이

cnt = 0
saved = 99_999
def dfs(word, ws, result):
    global cnt
    global saved
    if 1 <= len(result):
        cnt += 1
        if "".join(result) == word:
            saved = min(cnt, saved)
            return
        
    for i in range(len(ws)):
        if len(result) == 5:
            continue
        copy_result = result.copy()
        copy_result.append(ws[i])
        dfs(word, ws, copy_result)
        copy_result.remove(ws[i])

def solution(word):
    global cnt
    answer = 0
    ws = ['A', 'E', 'I', 'O', 'U']
    dfs(word, ws, [])
    return saved

✔️ 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/84512#