백준-9251 : LCS
https://www.acmicpc.net/problem/9251
풀의
- 두 문자를 글자마다 비교할 2차원 배열을 생성한다.
- 문자 하나를 기준을 잡는다.
- 두번째 문자열과 비교하면서 값을 업데이트 한다.
- 문자열이 동일한 경우 : 이전 dp의 1을 더한값을 저장한다.
- 문자열이 다른 경우 : 이전 좌표의 값들중 큰값을 저장한다.
코드 (Python)
import sys
def input():
return sys.stdin.readline().rstrip()
str1 = input()
str2 = input()
dp = [[0] * (1001) for _ in range(1001)]
for i in range(1,len(str1)+1):
for j in range(1,len(str2)+1):
if (str1[i-1] == str2[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(str1)][len(str2)])
'Algorithm' 카테고리의 다른 글
[Graph] 백준-14567 선수과목(Prerequisite) 골드5 (Python) (0) | 2023.05.23 |
---|---|
[Graph] 백준-11558 The Game of Death 실버4 (Python) (0) | 2023.05.21 |
[DP(Dynamic Programming)] 백준-1915 가장 큰 정사각형 골드4(Python) (0) | 2023.05.04 |
[DP(Dynamic Programming)] 백준-14767 Flow Shop(Python) (0) | 2023.04.30 |
[BFS,Deque] 백준-2206 벽 부수고 이동하기 골드2 (Python) (0) | 2023.04.28 |