-
Notifications
You must be signed in to change notification settings - Fork 0
/
Lv.3 [단어 변환] DFS.py
30 lines (28 loc) · 1.08 KB
/
Lv.3 [단어 변환] DFS.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#https://school.programmers.co.kr/learn/courses/30/lessons/43163#
answer = [51] #변환할 수 없는 경우. 변환할 수 있는 최댓값이 50임.
def check_change(begin, word):#변환할 수 있는지 확인
length = len(begin)
check = 0
for i in range(length):
if begin[i] != word[i]:
check+=1
if check > 1:
return False
if check == 1:
return True
def DFS(begin, target, words, num):
global answer
if begin == target: #변환이 완료되면 answer에 횟수 추가
answer.append(num)
return
else:
for idx, w in enumerate(words):
if check_change(begin, w): #변환이 가능하면 변환할 단어를 제외한 단어 리스트로 DFS
else_words = words[:idx] + words[idx+1:] #변환할 단어를 제외한 단어 리스트
DFS(w, target, else_words, num+1)
def solution(begin, target, words):
num=0
DFS(begin, target, words, num)
if min(answer) == 51: #변환할 수 없는 경우 0 리턴
return 0
return min(answer)