링크 : 프로그래머스 - 깊이/너비 우선 탐색(DFS/BFS) > 단어 변환
from collections import deque
def bfs(begin, target, words):
q = deque([(begin, 0)])
visited = [False] * len(words)
while q:
curWord, cnt = q.popleft()
if curWord == target:
return cnt
for i in range(len(words)):
if difference(curWord, words[i]) == 1 and not visited[i]:
q.append((words[i], cnt + 1))
visited[i] = True
return 0
def difference(oldWord, newWord):
diffCnt = 0
for i in range(len(oldWord)):
if oldWord[i] != newWord[i]:
diffCnt += 1
return diffCnt
def solution(begin, target, words):
answer = 0
return bfs(begin, target, words)
function solution(begin, target, words) {
var answer = 0;
var q = [[begin, 0]];
var visited = new Set();
visited.add(begin);
while (q.length){
var curWord = q.shift();
if (curWord[0] == target) return curWord[1];
for (let word of words){
if (visited.has(word)) continue;
let diff = 0;
for (let i in word){
if (word[i] != curWord[0][i]) diff++;
}
if (diff == 1){
q.push([word, ++curWord[1]]);
visited.add(word);
}
}
}
return answer;
}
while문 조건에 q라고써서 무한루프였다..