[파이썬] 백준 9251번 LCS

작성:

백준 #9251 LCS


# 체크할 조건
# 최대 1000글자

# 두 문자열을 비교
# 문자열이 같은 경우: 대각선 왼쪽 + 1 (이전 부분까지의 문자열 비교 LCS + 1)
# 문자열이 다른 경우: max(왼쪽, 위쪽) (두 경우 중 LCS가 더 큰것)


def solution(str1, str2):
    n, m = len(str1), len(str2)
    dp = [[0] * m for i in range(n)]
    for i in range(1, n):
        for j in range(1, m):
            if str1[i] == str2[j]: dp[i][j] = dp[i-1][j-1] + 1
            else: dp[i][j] = max(dp[i-1][j], dp[i][j-1])
    print(dp[-1][-1])

if __name__ == '__main__':
    solution(' '+input(), ' '+input())

댓글남기기