Written by
최태열
on
on
[Python][프로그래머스][Level3] 단어 변환
[Python][프로그래머스][Level3] 단어 변환
코드
import queue
def solution(begin, target, words):
if not target in words:
return 0
answer={i:10**8 for i in words}
q=queue.Queue()
q.put(begin)
answer[begin]=0
while q.qsize():
ck=q.get()
for word in words:
for i in range(len(word)):
if answer[word]==10**8 and ck[:i]+ck[i+1:]==word[:i]+word[i+1:]:
q.put(word)
answer[word]=answer[ck]+1
break
return answer[target] if answer[target]!=10**8 else 0
그래프와 bfs로 풀었다.
answer[word]가 10**8 이라면 방문하지 않은 단어이고 아니라면 방문한 단어이다.
따라서 begin 단어와 한단어 빼고 같은 단어는 answer 값을 answer[begin]+1로 만들면서 변환 횟수와 방문 표시를 동시에 한다.
그리고 큐에 넣는다.
이 과정을 반복하여 target 단어가 방문이 된다면 해당 값을 반환한다.
Discussion and feedback