문제 설명
•
두 문자열 , 에 대해 LCS(가장 긴 공통부분 문자열)의 길이를 구하는 문제
예제 입력/출력
•
입력1
ACAYKP
CAPCAK
Plain Text
복사
•
출력1
4
Plain Text
복사
제약 조건
•
◦
: 의 길이
◦
: 의 길이
문제 풀이
풀이1 브루트 포스 -
풀이2 그리디
풀이3 DP -
풀이 코드
•
Bottom-Up 방식의 구현
s1 = input()
s2 = input()
N, M = len(s1), len(s2)
s1 = " " + s1
s2 = " " + s2
# 초기값 처리
dp = [[0] * (M + 1) for _ in range(N + 1)]
# DP Table 갱신
for n in range(1, N + 1):
for m in range(1, M + 1): # dp[n][m]
if s1[n] == s2[m]:
dp[n][m] = dp[n - 1][m - 1] + 1
else:
dp[n][m] = max(dp[n - 1][m], dp[n][m - 1])
print(dp[N][M])
Python
복사
Top-Down 방식의 구현 (시간 초과)
알아두면 좋은 내용들
DP 테이블을 잘 설계하는 방법