프로그래머스 / 단어 변환 / python

맹민재·2023년 4월 27일
0

알고리즘

목록 보기
82/134
from collections import deque

def change(begin, word):
    cnt = 0
    for i in range(len(begin)):
        if begin[i] == word[i]:
            cnt += 1
    if cnt == len(begin) -1:
        return True
    else:
        return False

def solution(begin, target, words):
    answer = 0
    q = deque([[begin, 0]])
    visited = [False] * len(words)
    
    while q:
        w, deph = q.popleft()
        if w == target:
            return deph
        
        for i in range(len(words)):
            if not visited[i] and change(w, words[i]):
                visited[i] = True
                q.append([words[i], deph+1])
        
    return answer

최소 몇 단계 변화로 target을 구할 수 있는지 찾는 문제. 즉 최단 경로 문제이므로 bfs로 해결할 수 있다.

어럽진 않은 문제지만 주의할 점은 음...

profile
ㄱH ㅂrㄹ ㅈr

0개의 댓글