LeetCode - 72. Edit Distance (python)

홍석희·2024년 3월 5일

https://leetcode.com/problems/edit-distance/description/?envType=study-plan-v2&envId=top-interview-150

  • 난이도 : medium
  • 알고리즘 : 편집거리 알고리즘

접근방법

  • word1 에서 word2 로의 최소 편집거리를 구한다.
  • cache[word1_len + 1][word2_len + 1]의 배열을 구성한다.
  • cache[i][j] 는 word1[:i+1] 에서 word2[:j+1]으로 바꾸는데의 최소 비용
  • 점화식
    • word1[i] == word2[j]일 때
      • cache[i][j] = cache[i - 1][j - 1]
    • 그 외
      • cache[i][j] = min(cache[i - 1][j], cache[i][j - 1], cache[i - 1][j - 1]) + 1

소스코드

class Solution:
    def minDistance(self, word1: str, word2: str) -> int:
        n = len(word1)
        m = len(word2)
        cache = [[0 for _ in range(m + 1)] for _ in range(n + 1)]

        for i in range(n + 1):
            cache[i][0] = i
        for i in range(m + 1):
            cache[0][i] = i

        for i in range(1, n + 1):
            for j in range(1, m + 1):
                if word1[i - 1] == word2[j - 1]:
                    cache[i][j] = cache[i - 1][j - 1]
                else:
                    cache[i][j] = min(cache[i - 1][j], cache[i][j - 1], cache[i - 1][j - 1]) + 1
            
        return cache[n][m]
profile
개발 기록

0개의 댓글