dfs, bfs 문제에 아직도 적응을 못했다...
한 번에 도움 없이 풀기가 쉽지 않다.
dfs로 풀겠다고 생각은 했는데 최단 거리를 나타내려면 어떻게 해야할지 고민하느라 코드 작성이 안됐음.
일단 dfs로 그냥 푼 방법인데 프로그래머스 채점 상 통과는 됐다. 근데 사실 이렇게 하면 최단거리라기보단 target을 찾기만 하는 방식이다. 최단거리를 찾는 정확한 방식이라고 할 수 없어서 다시 봐야할 것 같다.
def solution(begin, target, words):
answer = 0
check = [True for i in range(len(words))]
stack = [begin]
now = ''
while stack:
now = stack.pop()
if now == target:
return answer
if not target in words:
return 0
for idx in range(len(words)):
if not check[idx]:
continue
diff = 0
for i in range(len(now)):
if now[i] != words[idx][i]:
diff += 1
if diff == 1:
stack.append(words[idx])
check[idx] = False
answer += 1
return answer