알고리즘

[프로그래머스] 단어 변환

hminor 2023. 6. 30. 10:30
# 해당 문제를 bfs로 풀었고 
# 처음에는 bfs로 어떻게 접근해야하는지에 대한 고민을 많이 했다.
# 그래서 dfs, bfs로 접근을 한다면 [ 변경되는 값, idx ]와 같은 걸  
# 어떻게 문제에 반영할 수 있는지에 대해 생각해보기로 했다.

from collections import deque

def solution(begin, target, words):
    if target not in words: return 0
    w_ln = len(words)
    que = deque([[begin,0]])

    while True:
        b, idx = que.popleft()
        visit, flag = [0]*w_ln, False
        if b == target: break

        for i in range(w_ln):
            for j in range(len(words[i])):
                if b[j] == words[i][j]: visit[i] += 1
        
        for i in range(w_ln):
            if len(begin)-1 == visit[i]:
                if words[i] == target: 
                    idx += 1
                    flag = True
                    break
                que.append([words[i], idx+1])
                words[i] = ''
        if flag: break

    return idx