[프로그래머스] 단어변환 (Python 파이썬)

dh·2022년 10월 20일
0
post-thumbnail

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

문제접근

words배열에서 begin과 한글자 빼고 일치하는 단어를 찾는다. bfs함수에 첫 변환 단계인 1과 그 단어를 전달하고 words배열에서 단어를 지운다. bfs에서 받은 단어로 처음에 한 과정을 반복한다.
한글자 뺴고 일치하는 단어가 있으면 단계에 +1을 하고 Q에 넣어 bfs를 진행한다.

코드

from collections import deque

def solution(begin, target, words):
    if target not in words:
        return 0
    def bfs(word,step):
        Q = deque()
        Q.append((word,step))

        words.remove(word)
    
        while Q:
            newWord, newStep = Q.popleft()
            if newWord == target:
                return newStep

            for w in words:
                cnt = 0
                for i in range(len(w)):
                    if newWord[i] == w[i]:
                        cnt += 1
                if cnt == len(w) - 1:
                    Q.append((w,newStep+1))
                    words.remove(w)
    
    for word in words:
        cnt = 0
        for i in range(len(word)):
            if begin[i] == word[i]:
                cnt += 1
        if cnt == len(word)-1:
            answer = bfs(word,1)
        
    if answer == None:
        answer =0
    return answer

0개의 댓글