a = [x for x in input()]
b = [x for x in input()]
alen = len(a)
blen = len(b)
dp = [[0] * (alen + 1) for _ in range(blen + 1)]
# dp[i][j] : i번째 문자와 j번째 문자 사이의 LCS길이
for i in range(1, blen + 1):
for j in range(1, alen + 1):
# 1 : 왼쪽값과 위쪽값, 현재까지 LCS의 최댓값을 찾기 위한 조건
# 2 : 왼쪽 대각선 값 + 1, 과거 LCS 최댓값에 같은 문자열이므로 + 1
dp[i][j] = max(dp[i][j - 1], dp[i - 1][j], dp[i - 1][j - 1] + (a[j - 1] == b[i - 1]))
print(dp[blen][alen])
* 참조
http://melonicedlatte.com/algorithm/2018/03/15/181550.html
https://reakwon.tistory.com/67
'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글
백준 15649번(python) (1) | 2019.12.31 |
---|---|
백준 1912번(python) (0) | 2019.08.20 |
백준 2565번(python) (0) | 2019.08.19 |
백준 11054번(python) (0) | 2019.08.18 |
백준 11053번(python) (0) | 2019.08.18 |