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. 검색이 어려운 경우 전체를 검색하면서 위에서 조건을 잘라내어 시간을 절약할 수 있습니다.