For Programmer
백준 9251번 파이썬 문제풀이(LCS) - dp 본문
728x90
a = '#' + input()
b = '#' + input()
dp = [[0 for _ in range(len(b) + 1)] for _ in range(len(a) + 1)]
'''
단순히 생각해서 2개의 문자열에 뒤에 같은 문자가 들어오면 공통 부분 문자열의 개수가 1개씩 증가한다는 개념을 이용해서
DP를 구하면 쉽다
'''
for i in range(1, len(a)):
for j in range(1, len(b)):
if a[i] == b[j]:
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(a) - 1][len(b) - 1])
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 9252번 파이썬 문제풀이(LCS 2) - dp(역추적) (0) | 2022.04.13 |
---|---|
백준 2096번 파이썬 문제풀이(내려가기) - dp (0) | 2022.04.12 |
백준 12015번 파이썬 문제풀이(가장 긴 증가하는 부분 수열 2 ) - 이분탐색 + dp (0) | 2022.04.12 |
백준 2698번 파이썬 문제풀이(인접한 비트의 개수) - DP(탑다운) (0) | 2022.04.11 |
백준 2565번 파이썬 문제풀이(전깃줄) - DP(탑다운) (0) | 2022.04.11 |
Comments