본문 바로가기

IT

프로그래머스 단어 변환 lv3

반응형

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

 

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

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

programmers.co.kr

 

function solution(begin, target, words) {
    var answer = 0;
    
    if(!words.includes(target)) return 0;
    
    let visited = [];
    let queue = [];
    
    queue.push([begin, answer])
    
   while(queue.length > 0){
       let [word, cnt] = queue.shift();
       
       if(word == target) return cnt;
       
       words.forEach((w)=>{
           let diff =0;
           
           if(visited.includes(w)) return;
           
           for(let i=0; i<w.length; i++ ){
               if(w[i] !== word[i]) 
                   diff++;
           }
           if(diff === 1){
               queue.push([w, cnt+1])
               visited.push(word)
           }
       })
           
   }
    
    
    return answer;
}