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

O2o2✨·2020년 12월 18일
0

알고리즘

목록 보기
29/43

링크 : 프로그래머스 - 깊이/너비 우선 탐색(DFS/BFS) > 단어 변환


코드 (py)

from collections import deque

def bfs(begin, target, words):
    q = deque([(begin, 0)])
    visited = [False] * len(words)
    
    while q:
        curWord, cnt = q.popleft()

        if curWord == target:
            return cnt
            
        for i in range(len(words)):
            if difference(curWord, words[i]) == 1 and not visited[i]:
                q.append((words[i], cnt + 1))
                visited[i] = True
                
    return 0

def difference(oldWord, newWord):
    diffCnt = 0
    
    for i in range(len(oldWord)):
        if oldWord[i] != newWord[i]:
            diffCnt += 1
    
    return diffCnt

def solution(begin, target, words):
    answer = 0
    
    return bfs(begin, target, words)

코드(js)

function solution(begin, target, words) {
    var answer = 0;
    var q = [[begin, 0]];
    var visited = new Set();
    visited.add(begin);
    
    while (q.length){
        var curWord = q.shift();
        if (curWord[0] == target) return curWord[1];
        for (let word of words){
            if (visited.has(word)) continue;
            let diff = 0;
            for (let i in word){
                if (word[i] != curWord[0][i]) diff++;
            }
            if (diff == 1){
                q.push([word, ++curWord[1]]);
                visited.add(word);
            }
        }
    }
    return answer;
}

while문 조건에 q라고써서 무한루프였다..

profile
프론트엔드 & 퍼블리셔

0개의 댓글