250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준#boj#16932#모양만들기
- 백준#BOJ#1939#중량제한
- 백준#BOJ#2615#오목
- 백준#BOJ#14501#퇴사#브루트포스
- 백준#BOJ#12865#평범한배낭
- 백준#BOJ#8012#한동이는영업사원
- 백준#boj#12755
Archives
- Today
- Total
순간을 성실히, 화려함보단 꾸준함을
[ boj : 3793 ] Common Subsequence 본문
문제 : 두개의 문자열이 주어지고 서로 부분 공통 문자열의 최대 길이를 구하시오.
해설 : 그냥 전형적인 LCS(Longest Common Subsequence) 문제입니다.
i번째 문자와 j 번째 문자가 같다면 (i-1,j-1) 의 값에서 +1 해주면 되고 아니라면 MAX[(i-1,j),(i,j-1)]을 해주면 됩니다.
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
string x, y;
ll dp[201][201];
void solve();
int main()
{
while (true) {
cin >> x >> y;
if (cin.eof()==true)break;
memset(dp, 0, sizeof(dp));
solve();
}
}
void solve()
{
for (int i = 0; i < x.length(); i++) {
for (int j = 0; j < y.length(); j++)
{
if (y[j] == x[i])
dp[i + 1][j + 1] = dp[i][j] + 1;
else
dp[i + 1][j + 1] = max(dp[i][j + 1], dp[i + 1][j]);
}
}
cout << dp[x.length()][y.length()]<<"\n";
}
'알고리즘,SQL > 백준,BOJ' 카테고리의 다른 글
[ boj : 4095 ] 최대 정사각형 (0) | 2021.04.26 |
---|---|
[ boj : 17143 ] 낚시왕 (0) | 2021.04.26 |
[ boj : 2418 ] 단어 격자 (0) | 2021.04.23 |
[ boj : 14678 ] 어그로 끌린 영선 (0) | 2021.04.23 |
[ boj : 3360 ] 깡총깡총 (0) | 2021.04.18 |