말랑한 하루

[Programmers] 단어 변환 (Lv 3, JavaScript) 본문

문제풀이/Programmers

[Programmers] 단어 변환 (Lv 3, JavaScript)

지수는말랑이 2022. 12. 9. 19:23
반응형

[ 개요 ]
브루트포스

[ 소스 코드 ]

function solution(begin, target, words) {
    const INT_MAX = 2147483647;
    let answer = INT_MAX;
    words.unshift(begin);
    let visit = new Array(words.length).fill(INT_MAX);
    
    if (!words.includes(target)) return 0;
    
    const checkWord = (o1, o2) => {
        return o1.filter((o, idx) => o != o2[idx]).length == 1 ? 1 : 0;
    }
    
    const changeWord = (prev, cnt) => {
        if (words[prev] === target) {
            answer = answer < cnt ? answer : cnt;
            return;
        }
        for(let i=1; i<words.length; i++) {
            if (i === prev) continue;
            if (visit[i] > cnt + 1 && 
                checkWord(words[prev].split(""), words[i].split(""))) {
                visit[i] = cnt + 1;
                changeWord(i, cnt + 1);
            }
        }
    }
    changeWord(0, 0);
    
    return answer;
}

[ 코드 분석 ]

DFS를 단어배열의 index를 초점으로 진행하여 첫 begin단어를 words배열에 추가해야 했다.

target value가 없는 경우를 위해 includes를 통해 예외처리를 진행했고

매번 모든 단어를 확인하므로, 다익스트라를 살짝 인용하였다.

반응형
Comments