https://programmers.co.kr/learn/courses/30/lessons/43163
target
이 words
에 없으면 바로 return 0.begin
과 word
가 같은 게 길이 -1 개 있으면 넘어가도록 구현. 이때 hit -> htk 도 가능하게 됩니다. const len = word.filter((el) => start.includes(el)).length;
target
과 word
가 같을 때 시도 횟수를 answer
배열에 모두 저장 후 최솟값 returntarget
이 words
에 있는지 체크했는지?function solution(begin, target, words) {
if (words.indexOf(target) === -1) return 0;
let isUsed = new Array(words.length).fill(false);
begin = begin.split('');
target = target.split('');
words = words.map((word) => word.split(''));
let answer = [];
function DFS(start, cnt) {
if (JSON.stringify(start) === JSON.stringify(target)) {
answer.push(cnt);
}
words.forEach((word, index) => {
if (!isUsed[index]) {
// const len = word.filter((el) => start.includes(el)).length;
let len = word.filter((el, idx) => el === start[idx]).length;
if (len === begin.length - 1) {
isUsed[index] = true;
DFS(word, cnt + 1);
isUsed[index] = false;
}
}
});
}
DFS(begin, 0);
return answer.length ? Math.min(...answer) : 0;
}