https://school.programmers.co.kr/learn/courses/30/lessons/43163#
words배열에서 begin과 한글자 빼고 일치하는 단어를 찾는다. bfs함수에 첫 변환 단계인 1과 그 단어를 전달하고 words배열에서 단어를 지운다. bfs에서 받은 단어로 처음에 한 과정을 반복한다.
한글자 뺴고 일치하는 단어가 있으면 단계에 +1을 하고 Q에 넣어 bfs를 진행한다.
from collections import deque
def solution(begin, target, words):
if target not in words:
return 0
def bfs(word,step):
Q = deque()
Q.append((word,step))
words.remove(word)
while Q:
newWord, newStep = Q.popleft()
if newWord == target:
return newStep
for w in words:
cnt = 0
for i in range(len(w)):
if newWord[i] == w[i]:
cnt += 1
if cnt == len(w) - 1:
Q.append((w,newStep+1))
words.remove(w)
for word in words:
cnt = 0
for i in range(len(word)):
if begin[i] == word[i]:
cnt += 1
if cnt == len(word)-1:
answer = bfs(word,1)
if answer == None:
answer =0
return answer