FrontEnd/프로그래머스

[JS] 단어 변환

728x90

DFS를 활용하여 해결하였다.

 

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

보통은 DFS/BFS를 통한 완전탐색 시에 배열을 많이 활용하는데 해당 문제의 경우 문자자체가 key가 되기 때문에 visited배열을 Map자료형을 사용하였다.

 

dfs를 활용해서 모든 경우의수를 탐색하며 최소값을 갱신시키면 된다.

 

 

function solution(begin, target, words) {
    
    //변할 수 있는 단어인지 체크
    const isCanChange = (st1,st2) => {
        let cnt = 0
        for (let i=0;i<st1.length;i++)
            if(st1[i]!==st2[i]) cnt ++
        return cnt===1 ? true : false
    }
       
    const visited = new Map()
    for (const word of words) visited.set(word,false)
    
    let ret = Infinity
    const dfs = (word,cnt) => {
        
        //종료조건
        if(word === target) {
            ret = Math.min(ret,cnt)
            return
        }
        
        for(const nxWord of words){
            if(!isCanChange(word,nxWord) || visited.get(nxWord)) continue
            visited.set(nxWord,true)
            dfs(nxWord,cnt+1)
            visited.set(nxWord,false)
        }
    }
    dfs(begin,0)
    return ret===Infinity ? 0 : ret
    
    
}
728x90

'FrontEnd > 프로그래머스' 카테고리의 다른 글

[JS] n+1 카드게임  (1) 2024.01.05
[JS] 네트워크  (1) 2024.01.03
[JS] 여행 경로  (0) 2024.01.01
[JS] 입국심사  (1) 2023.12.28
[JS] 가장 먼 노드  (0) 2023.12.27