PS
백준 1120. 문자열
tose33
2021. 6. 22. 16:11
https://www.acmicpc.net/problem/1120
1120번: 문자열
길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의
www.acmicpc.net
1. 문자열 A를 B의 0번째 인덱스부터 비교한다.
2. 문자열 A를 B의 1번째 인덱스부터 비교한다 ...
예를들어
A = abd
B = aababbc
문자열 A를 B의 0번째 인덱스부터 비교:
A = abd
B = aab
둘의 차 = 2
문자열 A를 B의 1번째 인덱스부터 비교:
A = abd
B = aba
둘의 차 = 1
...
이렇게 B의 0번째 인덱스부터 A와B의 크기의 차이만큼 쭉 비교해줘서 최소 차이값을 찾는다.
#include <iostream>
using namespace std;
#include <string>
#include <algorithm>
string A;
string B;
// string B[idx]부터 A와의 차이를 리턴한다
int Check(int idx) {
int sub = 0;
for(int i = idx; i < idx+A.length(); i++) {
if(A[i-idx] != B[i]) sub++;
}
return sub;
}
int main() {
cin >> A >> B;
// 문자열 B와 A 길이의 차이
int lenSub = B.length() - A.length();
int sub = 0; // 두 문자열의 차이
int res = 51; // A와 B의 최대길이는 50
// string B의 0부터 lenSub까지 문자열 비교
for(int i = 0; i <= lenSub; i++) {
sub = Check(i);
// 최소 차이 갱신
res = min(sub, res);
}
cout << res;
}