9251번과 같은 LCS 문제.
UTF-8로 인코딩되어있으므로 한글은 3바이트를 차지하고 있다. 즉, 한 글자당 크기 3의 사이즈를 차지하고 있기 때문에 9251번에서 1바이트씩 비교한 것과 달리 이번에는 3바이트씩 비교하면 된다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#include <iostream>
#include <string>
#define MAX 3003
using namespace std;
string str1;
string str2;
int dp[MAX][MAX];
int cnt;
void LCS(){
size_t n=str1.size();
size_t m=str2.size();
int char_size = 3;
for(int i=3;i<=n;i+=char_size){
for(int j=3;j<=m;j+=char_size){
if(str1.substr(i-3,char_size)==str2.substr(j-3,char_size)){
dp[i][j]=dp[i-3][j-3]+1;
}
else{
dp[i][j]=max(dp[i-3][j],dp[i][j-3]);
}
}
}
cout << dp[n][m] << endl;
}
int main(){
cin >> str1 >> str2;
LCS();
}
|
cs |
ps. 한글 문자열 참조 : https://modoocode.com/292
'Coding > 백준' 카테고리의 다른 글
| 1520번 내리막 길 (0) | 2020.02.27 |
|---|---|
| 7576번 토마토 (0) | 2020.02.25 |
| 2661번 좋은수열 (0) | 2020.02.20 |
| 11051번 이항 계수 2 (0) | 2020.02.17 |
| 11722번 가장 긴 감소하는 부분 수열 (0) | 2020.02.16 |