펭로그

[C++] 백준 BOJ 1120 문자열 본문

Study/PS(Algorithm)

[C++] 백준 BOJ 1120 문자열

노랑펭귄 2019. 1. 14. 16:38

문제링크 : https://noj.am/1120


단순하게 두 문자열을 같은 길이 만큼만 비교하여 일치하지 않는 만큼의 문자가 몇개인지를 체크하여 최소값을 구하는 브루트포스 알고리즘적 방법으로 접근하였다.


1. A의 앞에 아무 알파벳이나 추가한다. 2. A의 뒤에 아무 알파벳이나 추가한다.

이 두 조건을 최소값이 나오게 하려면 추가할 아무 알파벳을 B와 같게 만들면 되기 때문에 신경 안써도 되는 조건이다.


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
32
33
34
// BOJ_1120 문자열
#include <iostream>
#include <string>
 
using namespace std;
 
int min(int a, int b) {
    return a > b ? b : a;
}
 
int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
 
    string A, B;
    cin >> A >> B;
 
    int result = INT32_MAX;
 
    for (int i = 0; i <= B.size() - A.size(); i++) {
        int cnt = 0;
        int idxB = i;
        for (int idxA = 0; idxA < A.size(); idxA++, idxB++) {
            if (A[idxA] == B[idxB])
                continue;
            cnt++;
        }
        result = min(cnt, result);
    }
    cout << result;
 
    return 0;
}
cs


Comments