DataScience trainee

Programmers - 단어 변환

단어 변환


개요

  • 이번 포스팅은 파이썬 코딩테스트 연습문제 풀이입니다.
  • Programmers 에 공개된 예제이며 링크는 아래와 같습니다.

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


코드

from collections import deque

def compare(word, c_word):
    mismatch = 0
    for idx in range(len(word)):
        if word[idx] != c_word[idx]:
            mismatch += 1
    if mismatch == 1:
        return True
    else:
        return False
    
def bfs(begin, target, words):
    queue = deque()
    queue.append((begin, 0))
    visited = []
    while queue:
        current = queue.popleft()
        if current[0] == target:
            return current[1]
        if current[0] not in visited:
            visited.append(current[0])
            for word in words:
                if compare(current[0], word):
                    queue.append((word, current[1]+1))

    return 0

def solution(begin, target, words):

    answer = bfs(begin, target, words)

    return answer

마치며

이번 포스팅은 Programmers에 존재하는 파이썬 코딩테스트 깊이/너비 우선 탐색(DFS/BFS) 예제 중 레벨 3에 해당하는 문제입니다.