https://www.acmicpc.net/problem/5582
5582번: 공통 부분 문자열
두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들
www.acmicpc.net
LCS에서 연속성만 부여하면 된다.
같을때 대각선 위값을 계승. 틀릴때 그냥 0
import sys
input = sys.stdin.readline
str1, str2 = (input().rstrip() for _ in range(2))
n, m = len(str1), len(str2)
dp = [[0]*(m+1) for _ in range(n+1)]
max_v = 0
for i in range(1,n+1):
for j in range(1,m+1):
if str1[i-1] == str2[j-1]:
dp[i][j] = dp[i-1][j-1] + 1
if dp[i][j] > max_v:
max_v = dp[i][j]
print(max_v)
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 17073 나무 위의 빗물 (0) | 2021.09.17 |
---|---|
[백준][Python] 16435 스네이크 버드 : 구현 (0) | 2021.09.17 |
[백준][Python] 16208 귀찮음 (0) | 2021.09.16 |
[백준][Python] 16236 아기상어 (0) | 2021.09.16 |
[백준][Python] 2058 원자와 에너지 (0) | 2021.09.15 |