Skip to content

Commit bb2f0b5

Browse files
committed
1 parent 4362f08 commit bb2f0b5

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

Hongjoo/lv3/단어변환.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# 최소 편집 거리 =1 확인
2+
def check_edit1(a,b):
3+
diff= 0
4+
for i in range(len(a)) :
5+
if a[i] != b[i] :
6+
diff+=1
7+
if diff > 1 :
8+
return False
9+
if diff == 1 :
10+
return True
11+
12+
from collections import deque
13+
def solution(begin, target, words):
14+
answer = 0
15+
#excep1 :words 에 target없으면 -> 변환 불가
16+
if target not in words :
17+
return 0
18+
19+
# 1. 인접 graph 생성
20+
graph = [[] for _ in range(len(words)+2)]
21+
# begin -> words, target 단방향
22+
for k in range(len(words)) :
23+
if check_edit1(begin, words[k]) :
24+
graph[0].append(k+1)
25+
if check_edit1(begin,target):
26+
graph[0].append(len(words)+1)
27+
# words -> wrods_1(쌍방향) , target(단방향)
28+
for k in range(len(words)):
29+
for j in range(k ,len(words)):
30+
if check_edit1(words[k], words[j]):
31+
graph[k+1].append(j+1)
32+
graph[j+1].append(k+1)
33+
if check_edit1(words[k], target):
34+
graph[k+1].append(len(words)+1)
35+
36+
#2.BFS
37+
visited = [ 0 for _ in range(len(words)+2)]
38+
def bfs(visited):
39+
visited[0] = 0
40+
queue = deque()
41+
queue.append(0)
42+
43+
while queue :
44+
curr_idx = queue.popleft()
45+
if len(graph[curr_idx]) <= 0 : # 이웃한 놈이 없는 경우 => return 0
46+
return 0
47+
48+
for next_idx in graph[curr_idx] :
49+
if not visited[next_idx] :
50+
51+
queue.append(next_idx)
52+
visited[next_idx] = visited[curr_idx] + 1
53+
54+
if visited[-1] : #성공
55+
return visited[-1]
56+
57+
return visited[-1]
58+
59+
60+
# print(graph)

0 commit comments

Comments
 (0)