LCS - 최장 공통 부분 수열자료구조+알고리즘2022. 9. 2. 19:08
Table of Contents
LCS?
- LCS (longest common substring)는 두 문자열 사이에 가장 긴 공통 부분 문자열을 구하는 문제이다.
- dp를 이용해 쉽게 해결할 수 있다!
str1 = "ABCGI"
str2 = "ACGIK"
dp = [[0] * (len(str2) + 1) for _ in range(len(str1) + 1)]
result = ""
for i in range(1, len(str1) + 1):
for j in range(1, len(str2) + 1):
if str1[i - 1] == str2[j - 1]:
result += str1[i - 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], result)
# 4, ACGI
'자료구조+알고리즘' 카테고리의 다른 글
가장 긴 증가하는 부분 수열 (0) | 2022.09.02 |
---|---|
플로이드-워셜 (0) | 2022.06.03 |
우선순위 큐 다익스트라 (0) | 2022.05.31 |
cmp_to_key / 커스텀 정렬 (0) | 2022.05.30 |
이진 탐색 (0) | 2022.05.29 |
@덕구공 :: Duck9s'
주니어 개발자에욤
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!