teddy8 Full Stack Software Engineer

[BaekJoon][Greedy] 1120. 문자열

2019-07-01
teddy8

문제

URL : https://www.acmicpc.net/problem/tag/%EA%B7%B8%EB%A6%AC%EB%94%94%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98


소스코드

/* 문제 : [1120] 문자열
[input]
adaabc aababbc
[output]
2
[설명]
길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 
예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다.
두 문자열 A와 B가 주어진다. 이때, A의 길이는 B의 길이보다 작거나 같다. 
이제 A의 길이가 B의 길이와 같아질 때 까지 다음과 같은 연산을 할 수 있다.
1. A의 앞에 아무 알파벳이나 추가한다.
2. A의 뒤에 아무 알파벳이나 추가한다.
이때, A와 B의 길이가 같으면서, A와 B의 차이를 최소로 하는 프로그램을 작성하시오.

A의 길이는 B의 길이보다 작거나 같다.
나머지 다 같은데 A[0], B[0]가 다르면 차이는 1
A는 B보다 작거나 같기 때문에 앞이나 뒤에 알파벳을 추가함으로 써 A와 B의 차이를 최소로 할 수 있다
*/
#include <iostream>
#include <string>
using namespace std;

int main()
{
	string s1, s2;
	int count;
	int min = 1234567890;

	cin >> s1 >> s2;

	for (int i = 0; i <= (s2.length() - s1.length()); i++) {
		count = 0;
		for (int k = 0; k < s1.length(); k++) {
			if (s1[k] != s2[k + i])
				count++;
		}
		if (count < min)
			min = count;
	}

	cout << min;
	return 0;
}


Comments

Content