250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(백준 c++)9251 LCS 본문
728x90
반응형
문제
LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.
예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.
입력
첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.
출력
첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다.
DP 문제 하면 나오는 LCS 문제..!
SWEA에서 푼 풀이가 있으니 위 링크를 통해 보면 될 것 같다..!
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main(void){
vector<vector<int>> v(1001, vector<int>(1001, 0));
string a, b;
cin >> a >> b;
if(a.size() > b.size()){
swap(a, b);
}
for(int i = 1; i <= a.size(); i++){
for(int j = 1; j <= b.size(); j++){
if(a[i - 1] == b[j - 1]){
v[i][j] = v[i - 1][j - 1] + 1;
}
else{
v[i][j] = max(v[i - 1][j], v[i][j - 1]);
}
}
}
cout << v[a.size()][b.size()];
return 0;
}
728x90
반응형
'백준 알고리즘' 카테고리의 다른 글
(백준 c++)12865 평범한 배낭 (0) | 2020.12.30 |
---|---|
(백준 c++)1912 연속합 (0) | 2020.12.30 |
(백준 c++)2565 전깃줄 (0) | 2020.12.29 |
(백준 c++)11053 가장 긴 바이토닉 부분 수열 (0) | 2020.12.29 |
(백준 c++)11053 가장 긴 증가하는 부분 수열 (0) | 2020.12.29 |