algorithm/Bruteforce & Backtracking
[C++] BOJ 1120 문자열
gartenhh
2021. 4. 3. 03:17
문제
백준 1120번
1120번: 문자열
길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의
www.acmicpc.net
코드
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string A, B;
int main() {
cin >> A >> B;
int ans = 50;
int idx = B.length() - A.length();
for (int i = 0; i <= idx; i++) {
int cnt = 0;
for (int j = 0; j < A.length(); j++) {
if (A[j] != B[j+i]) cnt++;
}
ans = min(ans, cnt);
}
cout << ans;
}
풀이방법
B를 기준으로 A의 시작 위치를 바꿔가며 A와 B가 다른 부분의 개수를 각각 센다. 이 개수들 중에서 최솟값을 구한다. (A의 앞뒤에 추가하는 알파벳은 B에 맞춰주면 되므로 풀이에는 영향력이 없다.)
고민과정
풀이과정에서 헤매지는 않았다. 메소드를 좀 더 알아놔야겠다.