백준 9251 LCS (파이썬)


9251 LCS 문제 바로가기

접근방식

  • LCS는 Longest Common Subsequence의 준말로 최장 공통 부분 수열을 의미한다.
  • 이 문제는 최장 공통 부분 수열을 구하는 것이 아닌 카운트하는 문제였다.
  • LCS의 기본 점화식은 다음과 같다. 이 점화식을 기본으로 문제를 해결하면 된다.


파이썬 코드

import sys

x = list(sys.stdin.readline().strip('\n'))
y = list(sys.stdin.readline().strip('\n'))

x.insert(0,'0')
y.insert(0,'0')

m = len(x)
n = len(y)

c = [[0]* (n) for _ in range(m)]

for i in range(1,m):
    for j in range(1,n):
        if x[i] == y[j]:
            c[i][j] = 1 + c[i-1][j-1]
        else:
            c[i][j] = max(c[i-1][j], c[i][j-1])

print(c[m-1][n-1])





© 2020.09. by 다로

Powered by theorydb