1120 : 문자열

풀이

그리디하게 풀어보자.

a의 길이가 b보다 짧으므로 a[i] != b[j]의 개수가 가장 짧은 구간을 택하면

아무 문자나 양옆으로 붙일 수 있으므로

최소의 a[i] != b[j] 합이 답이 된다.

코드

#include <cstdio>
#include <cstring>
char a[55], b[55];
int alen, blen, sum, min = 1e9, i, j;
int main() {
	scanf("%s %s", a, b);
	alen = strlen(a);
	for (; b[i + alen - 1]; i++, sum = 0) {
		for (j = 0; a[j]; j++) sum += (a[j] != b[i + j]);
		min = min < sum ? min : sum;
	}
	return ~printf("%d", min);
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2018-03-22 10:10

Read more posts by this author