from collections import deque
def change(begin, word):
cnt = 0
for i in range(len(begin)):
if begin[i] == word[i]:
cnt += 1
if cnt == len(begin) -1:
return True
else:
return False
def solution(begin, target, words):
answer = 0
q = deque([[begin, 0]])
visited = [False] * len(words)
while q:
w, deph = q.popleft()
if w == target:
return deph
for i in range(len(words)):
if not visited[i] and change(w, words[i]):
visited[i] = True
q.append([words[i], deph+1])
return answer
최소 몇 단계 변화로 target을 구할 수 있는지 찾는 문제. 즉 최단 경로 문제이므로 bfs로 해결할 수 있다.
어럽진 않은 문제지만 주의할 점은 음...