단어 변환 조건에 부합하는지 확인하는 compare 함수
단어 변환 조건: 한 문자만 달라야 함
-> 한 문자만 다르면 true, 아니면 false 반환
bfs
기존 bfs와 차이
- compare가 true이면 큐에 넣어줌
- visited -> 0이면 방문 x, 1이상이면 방문 o (지나쳐온 개수 저장)
from collections import deque
def solution(begin, target, words):
if target not in words:
return 0
else:
visited = [0] * len(words)
bfs(begin, target, words, visited)
print(visited)
return visited[words.index(target)]
def bfs(begin, target, words, visited):
queue = deque([begin])
q_idx = 0
while queue:
q = queue.popleft()
if q == target:
return 0
if q in words:
q_idx = words.index(q)
for i, w in enumerate(words):
if compare(q, w) and not visited[i]:
queue.append(w)
visited[i] = visited[q_idx] + 1
def compare(a, b):
answer = 0
for i in range(len(a)):
if a[i] == b[i]:
answer += 1
return True if answer == len(a) - 1 else False