문제
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차원 리스트를 만들어서 같은 글자가 있을 때마다 카운트를 누적해주었다.
💡 피드백
비슷한 유형의 문제들이 많은데,
아직 보자마자 바로 풀지는 못하는 것 같다.
많이 풀어봐야겠당
'4️⃣ Python > Problem Solving' 카테고리의 다른 글
[Python Algorithm] 카드 구매하기 BOJ #11052 (0) | 2022.05.26 |
---|---|
[Python Algorithm] 다리 놓기 BOJ #1010 (0) | 2022.05.26 |
[Python Algorithm] 동전1 BOJ #2293 (0) | 2022.05.26 |
[Python Algorithm] AC BOJ #5430 (0) | 2022.05.24 |
[Python Algorithm] 전화번호 목록 BOJ #5052 (0) | 2022.05.24 |
댓글