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;

}