728x90
반응형
1958번: LCS 3
문제
https://www.acmicpc.net/problem/1958
1958번: LCS 3
첫 줄에는 첫 번째 문자열이, 둘째 줄에는 두 번째 문자열이, 셋째 줄에는 세 번째 문자열이 주어진다. 각 문자열은 알파벳 소문자로 이루어져 있고, 길이는 100보다 작거나 같다.
www.acmicpc.net
풀이
9251번 LCS의 확장 버전이다. 아래 문제와 다른 점은 문자열 두개가 아닌 세 개를 비교하는 문제다.
[백준 / BOJ] C++ 9251 LCS
9251번: LCS 문제 https://www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.
khyunx.tistory.com
2차원 배열을 3차원 배열로 바꾸면 끝이다.
코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
string a, b, c;
cin >> a >> b >> c;
int dp[101][101][101] = {0};
int a_size = a.size();
int b_size = b.size();
int c_size = c.size();
for (int i = 1; i <= a_size; i++)
for (int j = 1; j <= b_size; j++)
for (int k = 1; k <= c_size; k++)
if (a[i - 1] == b[j - 1] && b[j - 1] == c[k - 1])
dp[i][j][k] = dp[i - 1][j - 1][k - 1] + 1;
else
dp[i][j][k] = max(max(dp[i - 1][j][k], dp[i][j - 1][k]), dp[i][j][k - 1]);
cout << dp[a_size][b_size][c_size];
return 0;
}
728x90
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 / BOJ] C++ 26082 WARBOY (0) | 2023.02.17 |
---|---|
[백준 / BOJ] C++ 9213 꽤 좋은 수 (0) | 2023.02.15 |
[백준 / BOJ] C++ 9252 LCS 2 (0) | 2023.02.15 |
[백준 / BOJ] C++ 9251 LCS (0) | 2023.02.15 |
[백준 / BOJ] C++ 1269 대칭 차집합 (0) | 2023.02.14 |