최장 공통 부분수열 길이를 구하고 찾기
최장 공통 부분수열 찾기
import sys
strA = sys.stdin.readline().strip()
strB = sys.stdin.readline().strip()
n = len(strA)
m = len(strB)
LCS = [[0] * (m+1) for _ in range(n+1)]
# 최대 공통 부분수열 길이 구하기
for i in range(1,n+1):
for j in range(1,m+1):
if strA[i-1] == strB[j-1]:
LCS[i][j] = LCS[i-1][j-1] + 1
else:
LCS[i][j] = max(LCS[i-1][j],LCS[i][j-1])
result = []
i = n
j = m
# 최대 공통 부분수열 찾기
while i > 0 and j > 0:
if LCS[i][j] == LCS[i-1][j]:
i -= 1
elif LCS[i][j] == LCS[i][j-1]:
j -= 1
else:
result.append(strA[i-1])
i -= 1
j -= 1
print(LCS[-1][-1])
for i in result[::-1]:
print(i,end="")