코딩테스트 문제풀이/프로그래머스

[프로그래머스] 단어변환

itaeiou 2022. 3. 18. 20:17
반응형

43163 단어변환

https://programmers.co.kr/learn/courses/30/lessons/43163

 

코딩테스트 연습 - 단어 변환

두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수

programmers.co.kr

 

20220318 javascript 풀이

function solution(begin, target, words) {
    if(words.find(word => target===word) === undefined) return 0;
    
    const len = target.length;
    let q = [begin];
    let visited = new Map();
    visited.set(begin, 0);
    words.forEach(word => visited.set(word, 0));
    
    while(q.length > 0) {
        let temp = q.shift();
        
        words.forEach((word, i1) => {
            let count = 0;
            for(let i2=0; i2<len; i2++) {
                if(word[i2] === temp[i2]) count++;
            }
            if(count === len-1 && visited.get(word) === 0) {
                q.push(word);
                visited.set(word, visited.get(temp)+1);
            }
        })
    }
    
    return visited.get(target);
}
반응형