Algorithm/Baekjoon

[Python] 9251. LCS

느낌표 공장장 2021. 12. 16. 22:54
seq1 = input()  # 문자열 1
seq2 = input()  # 문자열 2
seq_l1 = len(seq1) + 1  # 1번 문자열의 길이
seq_l2 = len(seq2) + 1  # 2번 문자열의 길이
dp = [[0 for _ in range(seq_l2)] for _ in range(seq_l1)]

for i in range(1, seq_l1):  # dp 배열 행열에 맞춰서(seq1-행, seq2-열) for문 선언
    for j in range(1, seq_l2):
        if seq1[i-1] == seq2[j-1]:  # 가장 최근에 추가된 글자가 같다면
            dp[i][j] = dp[i-1][j-1] + 1 # 글자가 추가되기 전, 최대 길이 + 1
        else:   # 다르다면
            dp[i][j] = max(dp[i][j-1], dp[i-1][j])  # 기존에 주어진 문자열로 만들 수 있었던 길이 중, 최대 길이 선택

print(dp[-1][-1])

'Algorithm > Baekjoon' 카테고리의 다른 글

[Python] 10026. 적록색약  (0) 2021.12.16
[Python] 2805. 나무 자르기  (0) 2021.12.16
[Python] 12865. 평범한 배낭  (0) 2021.12.16
[Python] 1806. 부분 합  (0) 2021.12.16
[Python] 12015. 가장 긴 증가하는 부분 수열2  (0) 2021.10.21