[C++]BOJ 1120 - 문자열

[C++]BOJ 1120 - 문자열

단순 그리디. B 안에서의 차이가 가장 적은 A를 구하면 그게 답이다.

추가하는 연산은 무조건 차이가 가장 적게 할 테니까 신경 쓰지 않는다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int main()
{
char a[50], b[50];
cin >> a >> b;
int al = sprintf(a, "%s", a);
int bl = sprintf(b, "%s", b);
int c = 51;
for(int i = 0; i < bl - al + 1; i++)
{
int co = 0;
for(int j = 0; j < al; j++)
{
if(b[j+i] != a[j]) co++;
}
if(co < c) c = co;
}
cout << c;
}

지금보면 좀 한심한 코드다.

배열 길이 구하겠다고 sprintf를 썼다.

시간나면 수정해서 다시 올리자.


불편해서 바로 해버렸다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main()
{
string a, b;
cin >> a >> b;
int c = 51;
for(int i = 0; i < b.size() - a.size() + 1; i++)
{
int co = 0;
for(int j = 0; j < a.size(); j++)
if(b[j+i] != a[j]) co++;
if(co < c) c = co;
}
cout << c;
}