結果
| 問題 | 
                            No.225 文字列変更(medium)
                             | 
                    
| コンテスト | |
| ユーザー | 
                             はむ吉🐹
                         | 
                    
| 提出日時 | 2016-05-28 19:33:36 | 
| 言語 | Python3  (3.13.1 + numpy 2.2.1 + scipy 1.14.1)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 1,042 ms / 5,000 ms | 
| コード長 | 790 bytes | 
| コンパイル時間 | 316 ms | 
| コンパイル使用メモリ | 12,288 KB | 
| 実行使用メモリ | 18,304 KB | 
| 最終ジャッジ日時 | 2024-12-24 10:51:06 | 
| 合計ジャッジ時間 | 12,467 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge1 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 22 | 
ソースコード
#!/usr/bin/env python3
import array
import itertools
def compute_levenshtein_distance(s1, s2):
    l1 = len(s1)
    l2 = len(s2)
    INF = 10 ** 6
    dp = [array.array("L", (INF for _ in range(l2 + 1)))
          for _ in range(l1 + 1)]
    for i1 in range(l1 + 1):
        dp[i1][0] = i1
    for i2 in range(l2 + 1):
        dp[0][i2] = i2
    for i1, i2 in itertools.product(range(1, l1 + 1), range(1, l2 + 1)):
        cost = s1[i1 - 1] != s2[i2 - 1]
        dp[i1][i2] = min(dp[i1 - 1][i2] + 1,  # insertion
                         dp[i1][i2 - 1] + 1,  # deletion
                         dp[i1 - 1][i2 - 1] + cost)  # replacement
    return dp[l1][l2]
def main():
    _ = input()
    print(compute_levenshtein_distance(input(), input()))
if __name__ == '__main__':
    main()
            
            
            
        
            
はむ吉🐹