반응형
https://www.acmicpc.net/problem/5582
dp문제였습니다.
풀이방법
d[i][j] = i부분과 j부분의 문자가 같다면 그 이전의 최대길이 + 1 로 정의합니다.
Code
#include <bits/stdc++.h>
using namespace std;
string s, t;
int ans, d[4001][4001];
int main(){
cin >> s >> t;
for(int i = 0; i < s.size(); i++){
for(int j = 0; j < t.size(); j++){
if(s[i] == t[j]){
d[i+1][j+1] = d[i][j] + 1;
ans = max(ans,d[i+1][j+1]);
}
}
}
cout << ans << '\n';
}
Test Case
질문 게시판에 있는 반례들입니다.
입력:
PORPOISE
PROPORTION
정답:
3
입력:
ACMICPC
ACMICPCNET
정답:
7
'Algorithm > DP(Dynamic Programing)' 카테고리의 다른 글
(C++) - 프로그래머스(2017 카카오코드 예선) : 보행자 천국 (0) | 2021.07.24 |
---|---|
(C++) - 백준(BOJ) 14728번 : 벼락치기 (0) | 2021.07.23 |
(C++) - 백준(BOJ) 1915번 : 가장 큰 정사각형 (0) | 2021.07.15 |
(C++) - 백준(BOJ) 1932번 : 정수 삼각형 (0) | 2021.07.15 |
(C++) - 백준(BOJ) 5557번 : 1학년 (0) | 2021.07.09 |