728x90
문제
LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.
예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.
입력
첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.
출력
첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다.
제출
a=input()
b=input()
c=len(a)+1
d=len(b)+1
dp=[[0]*d for _ in range(c)]
for i in range(1,c):
for j in range(1,d):
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[c-1][d-1])
예제
ACAYKP
CAPCAK
결과
9251번: LCS
LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.
www.acmicpc.net
728x90
'Python > 백준' 카테고리의 다른 글
[Python] 백준 11659 구간 합 구하기 4 (0) | 2023.06.17 |
---|---|
[Python] 백준 12865 평범한 배낭 (0) | 2023.06.16 |
[Python] 백준 2565 전깃줄 (0) | 2023.06.14 |
[Python] 백준 11054 가장 긴 바이토닉 부분 수열 (0) | 2023.06.13 |
[Python] 백준 11053 가장 긴 증가하는 부분 수열 (0) | 2023.06.12 |
댓글