a, b = input().split()
ans = []
for i in range(len(b) - len(a) + 1):
cnt = 0
for j in range(len(a)):
if a[j] != b[i + j]:
cnt += 1
ans.append(cnt)
print(min(ans))
<코드 설명>
a와 b를 입력 먼저 받아주었다.
두 문자열 길이의 차이만큼 for문을 통해 반복시켜주었다. 그 내에서 for문을 통해 a와 b의 문자열과 비교해주었다. 비교해서 다르다면 cnt를 1씩 추가해주었다. a의 문자열을 다 비교한 후 ans에 cnt를 추가해주었다. 이를 문자열 길이의 차이 만큼 반복 후 ans 중 가장 작은 값을 출력해주었다.
#include<stdio.h>
int func(int n) {
int sum = n;
while (n > 0) {
sum += n % 10;
n = n / 10;
}
return sum;
}
int main()
{
int i, arr[10001] = { 0 }, result;
for (i = 1; i <= 10000; i++) {
result = func(i);
if (result < 10001) {
arr[result] = 1;
}
}
for (i = 1; i <= 10000; i++) {
if (arr[i] != 1) {
printf("%d\n", i);
}
}
return 0;
}
<코드 설명>
- func 함수 : 인자값을 sum에 넣어준다. sum에 n을 10으로 나눈 나머지(일의 자리)를 더해주며, n을 10 나눠준다(십의 자리). 또 이 십의 자리를 더해주며 이를 n이 0보다 클 때까지 반복시켜준다.
먼저 배열 arr를 만들어주었다. 10000까지의 수를 확인해주어야 하기 때문에 이를 for문을 통해 i가 1부터 10000까지 반복시켜주었다. result에 func(i)를 저장해주고 result가 10001 미만이면 arr[result]에 1을 저장시켜준다. 그리고 이 과정이 끝나면 arr의 저장값이 1이 아닌 경우만 출력해주었다.