https://www.acmicpc.net/problem/9252
소스 코드
#include <iostream>
#include <string>
using namespace std;
int map[1002][1002] = { 0 };
int main() {
string str1, str2;
cin >> str1 >> str2;
//map을 채우는 코드
for (int i = 0; i < str1.size(); i++) {
char s = str1[i];
for (int j = 0; j < str2.size(); j++) {
if (s == str2[j]) {
map[i + 1][j + 1] = map[i][j] + 1;
}
else {
map[i + 1][j + 1] = max(map[i][j + 1], map[i + 1][j]);
}
}
}
string str = "";
int cnt = 0;
//search하는 과정의 코드
int row = str1.size();
int col = str2.size();
while (map[row][col] != 0) {
if (map[row][col] == map[row - 1][col]) {
row = row - 1;
}
else if (map[row][col] == map[row][col - 1]) {
col = col - 1;
}
else {
str += str1[row - 1];
cnt += 1;
row -= 1;
col -= 1;
}
}
cout << cnt << '\n';
for (int i = str.size() - 1; i >= 0; i--) {
cout << str[i];
}
}
'알고리즘' 카테고리의 다른 글
[백준] 27172번 수 나누기 게임 C++ 문제풀이 (1) | 2024.01.11 |
---|---|
[백준] 17404번 RGB거리 2 C++ 문제풀이 (0) | 2024.01.10 |
[백준] 9251번 LCS C++ 문제풀이 (0) | 2024.01.08 |
[백준] 2467번 용액 C++ 문제풀이 (1) | 2024.01.08 |
[백준] 14502번 연구소 C++ 문제풀이 (0) | 2024.01.08 |