알고리즘[Python]/프로그래머스
[ Lv 3 ] 단어 변환
병훈1234
2021. 7. 13. 12:20
문제 설명
풀이 과정
1. 문자열 두개를 비교하는 함수를 하나 만들어 줌(서로 다른 문자열의 개수가 단 한개여야 함)
2. begin을 시작점으로 최단 길이의 변환 과정이므로 bfs를 돌아줌. ( 서로 다른 문자열의 개수가 단 한개이고, 방문하지 않은 문자열 )
from collections import deque
def compare(a, b):
count = 0
for i in range(len(a)):
if a[i] == b[i]:
count += 1
if count == len(a)-1:
return True
else:
return False
def solution(begin, target, words):
answer = 0
visited = set()
queue = deque()
queue.append([begin, 0])
visited.add(begin)
while queue:
wd,count = queue.popleft()
if wd == target:
answer = count
break
for word in words:
if not word in visited and compare(wd, word):
queue.append([word, count+1])
visited.add(word)
return answer