문제
LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.
예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.
입력
첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.
출력
첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다.
예제 입력과 출력
알고리즘 분류
다이나믹 프로그래밍
정답
import sys
input = lambda : sys.stdin.readline().strip()
a=input()
b=input()
li=[[0]*(len(b)+1) for i 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]:
li[i][j]=li[i-1][j-1]+1
else:
li[i][j]=max(li[i][j-1],li[i-1][j])
print(li[-1][-1])
백준 알고리즘 9251번 : www.acmicpc.net/problem/9251
'알고리즘 > 백준알고리즘' 카테고리의 다른 글
백준알고리즘 - 2565번 전깃줄 - 파이썬(Python) (0) | 2020.07.06 |
---|---|
백준알고리즘 - 11729번 하노이 탑 이동 순서 - 파이썬(Python) (0) | 2020.07.06 |
백준알고리즘 - 1157번 단어 공부 - 파이썬(Python) (0) | 2020.07.05 |
백준알고리즘 - 11058번 크리보드 - 파이썬(Python) (0) | 2020.07.05 |
백준알고리즘 - 10942번 팰린드롬? - 파이썬(Python) (0) | 2020.07.04 |