두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다.
두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과정을 거쳐 begin을 target으로 변환할 수 있는지 return 하도록 solution 함수를 작성해주세요.
각 단어는 알파벳 소문자로만 이루어져 있습니다.
각 단어의 길이는 3 이상 10 이하이며 모든 단어의 길이는 같습니다.
words에는 3개 이상 50개 이하의 단어가 있으며 중복되는 단어는 없습니다.
begin과 target은 같지 않습니다.
변환할 수 없는 경우에는 0를 return 합니다.
먼저 문제를 살펴보면 begin의 단어에서 words에 있는 단어중 바꿀 수 있는 언어로 바꾸고 바꾼 단어에서 또 다른 언어로 바꿀 수 있는 단계로 내려가고... 그렇게 내려가다가 보면 target이 나오면 그 내려간 단계의 값을 return 하는 것으로 간단히 정리하자면,
def solution(begin, target, words):
answer = [begin]
cnt = 0
if target not in words :
return 0
while len(words) != 0 :
for i in answer:
temp = []
for word in words :
word_cnt = 0
for j in range(0,len(i)):
if i[j] != word[j] :
word_cnt +=1
if word_cnt > 1:
break;
if word_cnt == 1:
temp.append(word)
words.remove(word)
cnt +=1
if target in temp :
return cnt
else :
answer = temp
return answer