Skip to content

Commit be95a0d

Browse files
authored
Create 6.py
1 parent fbeb418 commit be95a0d

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

16/6.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
str1 = input()
2+
str2 = input()
3+
4+
# 최소 편집 거리 계산을 위한 다이나믹 프로그래밍
5+
def edit_dist(str1, str2):
6+
n = len(str1)
7+
m = len(str2)
8+
9+
# 이차원 테이블을 초기화
10+
dp = [[0] * (m + 1) for _ in range(n + 1)]
11+
12+
for i in range(n + 1):
13+
for j in range(m + 1):
14+
# 문자열 A가 비어 있다면, 문자열 B로 모든 문자를 삽입
15+
if i == 0:
16+
dp[i][j] = j
17+
# 문자열 B가 비어 있다면, 문자열 A로 모든 문자를 삽입
18+
elif j == 0:
19+
dp[i][j] = i
20+
# 문자가 같다면, 왼쪽 위에 해당하는 수를 그대로 가져옴
21+
elif str1[i-1] == str2[j-1]:
22+
dp[i][j] = dp[i-1][j-1]
23+
# 마지막 문자가 다르다면, 모든 경우의 수 중에서 최솟값 찾기
24+
else: # 삽입, 삭제, 교체 중에서 최소 비용을 찾아 삽입
25+
dp[i][j] = 1 + min(dp[i][j-1], dp[i-1][j], dp[i-1][j-1])
26+
27+
return dp[n][m]
28+
29+
print(edit_dist(str1, str2))

0 commit comments

Comments
 (0)