본문 바로가기

B/Coding Test

[프로그래머스] DFS/BFS - 단어 변환

https://programmers.co.kr/learn/courses/30/lessons/43163?language=python3 

 

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

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

programmers.co.kr

 

def solution(begin, target, words):
    visited = [False] * len(words)
    from collections import deque
    queue = deque([begin])
    
    for same_apb in range(0,len(begin),-1):
        node = queue.popleft()
        for n in len(words):
            if visited[n] == False:
                if check(node, words[n]) == same_apb:
                    visited[n] = True
                    queue.append(words[n])
            
        if queue.count(target)!=0:
            return len(begin)-check_point
    
    return 0
                
def check(word1, word2):
    cnt = 0
    for idx, w1 in enumerate(word1):
        if w1 == word2[idx]:
            cnt += 1
    return cnt

 

 

def solution(begin, target, words):
    stage = 0
    visited = [False] * len(words)
    from collections import deque
    queue = deque([(begin,stage)])
    
    while len(queue)>0:
        node = queue.popleft()
        for n in range(len(words)):
            if visited[n] == False:
                if check(node[0], words[n]) == 1:
                    visited[n] = True
                    queue.append((words[n], node[1]+1))

        for tar, stg in queue:
            if tar == target:
                return stg
    
    return 0
                
def check(word1, word2):
    cnt = 0
    for idx, w1 in enumerate(word1):
        if w1 == word2[idx]:
            cnt += 1
    return len(word1)-cnt