https://programmers.co.kr/learn/courses/30/lessons/43163
접근
정말 기본 dfs 문제입니다. 잔실수 안하면 금방 풀 수 있습니다. 레벨3이라고 되어 있는데, 조금은 이해가 되지 않습니다.
그냥 visit배열을 사용해서 한번 변환한 문자열로는 다시 변환하지 않는 것만 처리해주시고,
문자열이 1개만 다르다는걸 제대로 판단하시면 됩니다.
가끔 이 문제에서 문자열이 3글자만 올수있다고 생각하시는 분들도 계시지만, 문자열은 3~10글자로 올수 있습니다.
그리고 교집합으로 푸시면 안됩니다. 순서도 같아야 하는데,len(set(a) & set(b)) == 1 로 푸시면
'asd'와 'csa'가 한글자만 바뀌었다고 판단하게 됩니다.
코드 전문입니다.
visit = []
res = []
def solution(begin, target, words):
answer = 0
co = 0
for i in range(len(words)):
visit.append(0)
def dfs(word,depth):
if word == target:
res.append(depth)
return
else:
for i in range(len(words)):
if visit[i] == 1:
continue
co = 0
for j in range(len(word)):
if word[j] != words[i][j]:
co += 1
if co == 1:
visit[i] = 1
dfs(words[i],depth+1)
visit[i] = 0
dfs(begin,0)
if len(res) != 0 :
answer = min(res)
return answer