문제출처: https://programmers.co.kr/learn/courses/30/lessons/43163?language=python3
접근법
아이디어가 어렵다기 보다는 구현에서 조금 애를 먹었다.
mutable object( list )는 call by reference가 기본이므로 원하는대로 dfs가 이루어지지 않았다.
=> new = v[:] 와 같이 다른 객체로 복사하여 해결
코드
answer = 0
def solution(begin, target, words):
global answer
v = [0] * len(words)
def dfs(current,count,v):
global answer
new = v[:]
if( current == target ): # target과 같아지면
answer = min(answer,count) or count
return
for i,word in enumerate(words):
if( new[i] == 0 ): # 방문하지 않은 word
dif = 0
for j in range(len(begin)): # 한 글자만 다른지 확인
if( current[j] != word[j] ):
dif += 1
if( dif == 1 ): # 한 글자만 다르다면
new[i] = 1
dfs(word,count+1,new)
if( target in words):
dfs(begin,0,v)
return answer