프로그래머스 Level 3 - 단어 변환
📌 문제 설명
📌 생각한 풀이 방법
- BFS를 활용해 모든 경우를 탐색한다.
- 검사한 단어는 visited에 push한다.
- 전환 가능한 모든 단어를 queue에 push한다.
- 2~3과정을 queue에 단어가 존재할 때까지 반복한다.
📌 풀이
function solution(begin, target, words) {
if (!words.includes(target)) return 0;
function bfs(word, count) {
let visited = [];
let queue = [];
queue.push([word, count]);
while (queue.length) {
let [currentWord, count] = queue.shift();
if (currentWord === target) {
return count;
}
words.forEach((word) => {
let changeable = 0;
if (visited.includes(word)) return;
for (let i = 0; i < word.length; i++) {
if (word[i] !== currentWord[i]) changeable++;
}
if (changeable === 1) {
queue.push([word, ++count]);
visited.push(word);
}
});
}
}
return bfs(begin, 0);
}