Baekjoon 5582.py[共通部分文字列]


もし問題があったら?
import sys
input = sys.stdin.readline
w1 = input().rstrip()
w2 = input().rstrip()

dp = [[0]*(len(w2)+1) for _ in range(len(w1)+1)]
result = 0

for i in range(1, len(w1)+1):
    for j in range(1, len(w2)+1):
        if w1[i-1] == w2[j-1]:
            dp[i][j] = dp[i-1][j-1]+1
            result = max(result, dp[i][j])
print(result)

ふくガス


一つ一つ見回して、同じかどうかを見て、もちろんタイムアウトして、別の方法で解きます.
DPを用いて記述する場合,重要な部分は以下の論理である.if w1[i-1] == w2[j-1]: dp[i][j] = dp[i-1][j-1]+1現在の文字が同じ場合は、前の文字状態+1の方法で解読します.