본문 바로가기

Coding/백준

15482번 한글 LCS

 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