반응형
# Problem
LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. 입력첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다. 출력첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다. ![]() |
# Solution
n = list(input())
m = list(input())
dp = [[0]*(len(m)+1) for _ in range(len(n)+1)]
for i in range(1,len(n)+1):
for j in range(1,len(m)+1):
if n[i-1]==m[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[len(n)][len(m)])
dp[i][j]
문자열 n의 i 번째 까지의 부분문자열과
문자열 m의 j 번째 까지의 부분 문자열의 최장 공통 부분)
따라서 답은 dp[len(n)][len(m)]
반응형
'Algorithm > 백준 알고리즘 풀이' 카테고리의 다른 글
[Baekjoon] 2655. 가장 높은 탑 쌓기 (0) | 2021.04.23 |
---|---|
[Baekjoon] 1495. 기타리스트 (0) | 2021.04.23 |
[Baekjoon] 12865. 평범한 배낭 (0) | 2021.04.22 |
[Baekjoon] 1904. 01타일 ( 동적 프로그래밍 ) (0) | 2021.04.22 |
[Baekjoon] 11053. 가장 긴 증가하는 부분 수열 ( 동적 프로그래밍 ) (0) | 2021.04.22 |