https://leetcode.com/problems/edit-distance/
dp[i][j] == dp[i-1][j-1]
왜냐하면 어차피 뒷 부분은 같기 때문에 앞 부분을 바꾸는데 필요한 명령만 실행하면 되기 때문이다.class Solution:
def minDistance(self, word1: str, word2: str) -> int:
dp = [[0 for _ in range(len(word2)+1)] for _ in range (len(word1)+1)]
dp[0][0] = 0
for i in range(1, len(word1)+1):
dp[i][0] = i
for i in range(1, len(word2)+1):
dp[0][i] = i
for i in range(1, len(word1)+1):
for j in range(1, len(word2)+1):
if word1[i-1] == word2[j-1]:
dp[i][j] = dp[i-1][j-1]
else:
dp[i][j] = min(dp[i-1][j-1] + 1, dp[i-1][j] + 1, dp[i][j-1] + 1)
return dp[len(word1)][len(word2)]
참고: 편집거리 알고리즘