# 코딩 문제 관련/파이썬
백준 9251번(python)
Hwiyong Jo
2019. 8. 20. 01:20
a = [x for x in input()]
b = [x for x in input()]
alen = len(a)
blen = len(b)
dp = [[0] * (alen + 1) for _ in range(blen + 1)]
# dp[i][j] : i번째 문자와 j번째 문자 사이의 LCS길이
for i in range(1, blen + 1):
for j in range(1, alen + 1):
# 1 : 왼쪽값과 위쪽값, 현재까지 LCS의 최댓값을 찾기 위한 조건
# 2 : 왼쪽 대각선 값 + 1, 과거 LCS 최댓값에 같은 문자열이므로 + 1
dp[i][j] = max(dp[i][j - 1], dp[i - 1][j], dp[i - 1][j - 1] + (a[j - 1] == b[i - 1]))
print(dp[blen][alen])
* 참조
http://melonicedlatte.com/algorithm/2018/03/15/181550.html
[백준] 9251번 C/C++ 풀이 _ LCS - Easy is Perfect
출처 : https://www.acmicpc.net/problem/9251 시간 제한메모리 제한제출정답맞은 사람정답 비율1 초128 MB76453240240041.746% 문제LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. 입력첫째 줄과 둘째 줄에 두 문자열이 주
melonicedlatte.com
https://reakwon.tistory.com/67
[알고리즘:DP] 백준(BOJ) 9251번 LCS
LCS(Longest Common Subsequence) 백준 9251번입니다. 문제는 이렇습니다. 임의의 두 수열에서 공통적으로 갖고 있는 가장 긴 부분 수열의 길이를 구하는 것이 문제입니다. 예를 들어 다음과 같은 두 수열이 있다..
reakwon.tistory.com