본문 바로가기
4️⃣ Python/Problem Solving

[Python Algorithm] LCS BOJ #9251

by seolhee2750 2022. 5. 26.
문제

https://www.acmicpc.net/problem/9251

 

9251번: LCS

LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.

www.acmicpc.net

 

내 문제 풀이
a = input()
b = input()

dp = [[0 for _ in range(len(b)+1)] for _ in range(len(a)+1)]
for i in range(1, len(a)+1):
    for j in range(1, len(b)+1):
        if a[i-1] == b[j-1]:
            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])

👉 DP 문제

2차원 리스트를 만들어서 같은 글자가 있을 때마다 카운트를 누적해주었다.

 

💡 피드백

비슷한 유형의 문제들이 많은데,

아직 보자마자 바로 풀지는 못하는 것 같다.

많이 풀어봐야겠당

댓글