[C] 백준 1120 문자열

https://www.acmicpc.net/problem/1120

문제

길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다.

두 문자열 A와 B가 주어진다. 이때, A의 길이는 B의 길이보다 작거나 같다. 이제 A의 길이가 B의 길이와 같아질 때 까지 다음과 같은 연산을 할 수 있다.

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

이때, A와 B의 길이가 같으면서, A와 B의 차이를 최소로 하는 프로그램을 작성하시오.

제출 10960 정답 비율 53%





코드

#include <stdio.h>
#include <string.h>

void main() {
	char A[50], B[51];
	int save[50] = { 0 };
	scanf("%s %s", &A, &B);

	for (int i = 0; i <= strlen(B) - strlen(A); i++) {
		int dif = 0;

		for (int j = 0; j <= i; j++) {
			A[j+1] = A[j];
		}

		for (int k = 0; k <= i + strlen(A); k++) {
			if (A[k] != B[k])
				dif++;
		}

		save[i] = dif;
	}

	int min = save[0];
	for (int i = 0; i < 50; i++) {
		if (save[i] < min) {
			min = save[i];
		}
	}

	printf("%d", min);
}

좋은 웹페이지 즐겨찾기