문제풀이/DFS & BFS

[파이썬] [BFS] Pro 단어 변환

승무_ 2022. 2. 18. 09:29

문제

https://programmers.co.kr/learn/courses/30/lessons/43163?language=python3 

 

코딩테스트 연습 - 단어 변환

두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수

programmers.co.kr

 

코드

from collections import deque

def solution(begin, target, words):
    queue=deque()
    temp=[]
    for i in words:
        temp.append([n for n in i])
    begin=[n for n in begin]
    target=[n for n in target]
    if not target in temp:
        return 0
    queue.append(begin)
    visited=[0]*(len(words)+1)
    temp.append(begin)
    while queue:
        x=queue.popleft()
        if target == x:
            break
        for i in temp:
            count=0
            for j in range(len(i)):
                if x[j]==i[j]:
                    count+=1
            if count==len(i)-1:
                if visited[temp.index(i)]==0:
                    visited[temp.index(i)]=visited[temp.index(x)]+1
                    queue.append(i)
    return visited[temp.index(target)]