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

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

코드

import queue
def solution(begin, target, words):
    if not target in words:
        return 0

    answer={i:10**8 for i in words}
    
    q=queue.Queue()
    q.put(begin)
    answer[begin]=0

    while q.qsize():
        ck=q.get()
        for word in words:
            for i in range(len(word)):
                if answer[word]==10**8 and ck[:i]+ck[i+1:]==word[:i]+word[i+1:]:
                    q.put(word)
                    answer[word]=answer[ck]+1
                    break

    return answer[target] if answer[target]!=10**8 else 0

그래프와 bfs로 풀었다.

answer[word]가 10**8 이라면 방문하지 않은 단어이고 아니라면 방문한 단어이다.

따라서 begin 단어와 한단어 빼고 같은 단어는 answer 값을 answer[begin]+1로 만들면서 변환 횟수와 방문 표시를 동시에 한다.

그리고 큐에 넣는다.

이 과정을 반복하여 target 단어가 방문이 된다면 해당 값을 반환한다.

Discussion and feedback