개미의 개열시미 프로그래밍

[프로그래머스]LEVEL3 단어변환 - 파이썬 본문

알고리즘/DFS, BFS, 백트래킹

[프로그래머스]LEVEL3 단어변환 - 파이썬

YunHyeok 2021. 12. 11. 20:32
728x90
반응형

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

 

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

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

programmers.co.kr

 

 

[풀이 코드]

from collections import deque

def solution(begin, target, words):
    if target not in words:  # 애초에 words리스트에 target값이 없다면 return 0
        return 0

    q = deque()
    q.append([begin, 0])

    while q:
        x, cnt = q.popleft()

        if x == target:
            return cnt # target값이 되면 cnt 출력

        for i in range(0, len(words)):
            diff = 0
            word = words[i]
            for j in range(len(x)):
                if x[j] != word[j]:
                    diff += 1
            if diff == 1:
                q.append([word, cnt + 1])
    return 0 # target값이 있으나 변환될 수 없다면
  • 단어를 변환하는 과정을 2중 for문으로 구현하였고 변환 가능하다면 큐에 넣어주는 식으로 했다.
  • 큐에 들어가는 값은 단어와 cnt(이동한 횟수)이고 큐에서 단어를 pop 했을 때 target값과 일치하면 cnt를 출력한다.
728x90
반응형
Comments