문제 링크: https://www.acmicpc.net/problem/1120
B를 고정시켜놓고 A를 적당히 움직이면서 차이의 최소를 찾으면 됩니다. 왜냐면 앞뒤로 채우는 알파벳은 아무거나 채울 수 있으니 B와 동일한 알파벳을 추가한다고 가정하면 차이가 늘지 않기 때문입니다.
A=abc, B=aabbaabb라고 해보면 이런식으로 반복문을 돌리면 되겠죠?
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
string a, b;
cin >> a >> b;
int min_diff = INT_MAX;
for (int i = 0; i < b.size() - a.size() + 1; ++i) {
int cnt = 0;
for (int j = 0; j < a.size(); ++j)
if (a[j] != b[j + i])
++cnt;
min_diff = min(min_diff, cnt);
}
cout << min_diff << '\n';
return 0;
}
반응형
'Online Judge > 백준' 카테고리의 다른 글
[백준][C++] 1094: 막대기 (0) | 2020.08.13 |
---|---|
[백준][C++] 1080: 행렬 (0) | 2020.08.12 |
[백준][C++] 18249: 욱제가 풀어야 하는 문제 (0) | 2020.08.10 |
[백준][C++] 10610: 30 (0) | 2020.08.09 |
[백준][C++] 1049: 기타줄 (0) | 2020.08.08 |