algorithm/Bruteforce & Backtracking

[C++] BOJ 1120 문자열

gartenhh 2021. 4. 3. 03:17

문제

백준 1120번

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

코드

#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에 맞춰주면 되므로 풀이에는 영향력이 없다.)

고민과정

풀이과정에서 헤매지는 않았다. 메소드를 좀 더 알아놔야겠다.