백준 1958번 LCS 3 - C++ 풀이
1. dp(a, b, c): A[a...], B[b...], C[c...]의 LCS 길이 2. 만약 A[a] = B[b] = C[c]이면, dp(a, b, c) = 1 + dp(a+1, b+1, c+1) 3. 아니라면, dp(a, b, c) = max(dp(a+1, b, c), dp(a, b+1, c), dp(a, b, c+1)) 1. dp(a, b, c): A[a...], B[b...], C[c...]의 LCS 길이 세 문자열을 각각 A, B, C라고 하고 dp(a, b, c)를 위와 같이 정의하자. 2. 만약 A[a] = B[b] = C[c]이면, dp(a, b, c) = 1 + dp(a+1, b+1, c+1) 문자열 2개일 때 LCS와 똑같은 방식으로 점화식을 세우면 된다. 세 문자열의 첫 글자가 ..
2022. 7. 26.