[프로그래머스] 파이썬 문제풀이 –

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

첫 번째 솔루션

deque를 사용한 너비 우선 탐색

from collections import deque

def solution(begin, target, words):
    answer = 0
    visited=(0 for _ in range(len(words)))
    q=deque()
    q.append(begin)
    while q:
        word=q.popleft()
        if word==target:
            answer=visited(words.index(target))
            break
        for i in range(len(words)):
            if visited(i)==0:
                check=0
                for j in range(len(word)):
                    if words(i)(j)!
=word(j): check+=1 if check==1: if word==begin: visited(i)=1 else: visited(i)=visited(words.index(word))+1 q.append(words(i)) return answer

더 나은 대답

하나. 대상이 단어 목록에 없으면 검색을 계속할 필요가 없으므로 위의 슬라이스 코드를 추가했습니다.

from collections import deque

def solution(begin, target, words):
    answer = 0
    if target not in words:
        return answer
    visited=(0 for _ in range(len(words)))
    q=deque()
    q.append(begin)
    while q:
        word=q.popleft()
        if word==target:
            answer=visited(words.index(target))
            break
        for i in range(len(words)):
            if visited(i)==0:
                check=0
                for j in range(len(word)):
                    if words(i)(j)!
=word(j): check+=1 if check==1: if word==begin: visited(i)=1 else: visited(i)=visited(words.index(word))+1 q.append(words(i)) return answer

배우다

하나. 검색 알고리즘을 배웠지만 적용할 수 있었습니다.

2. 검색이 어려운 경우 전체를 검색하면서 위에서 조건을 잘라내어 시간을 절약할 수 있습니다.