minhui study

백준 1120번 문자열(python) 본문

백준 문제풀이/그리디 알고리즘

백준 1120번 문자열(python)

minhui 2020. 7. 3. 14:00

https://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

문제

길이가 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의 차이를 최소로 하는 프로그램을 작성하시오.

 

해설

문자열 B중에서 A와 가장 같은 부분이 많은 A길이의 연속된 구간을 찾은 후 나머지 부분의 원소들은 똑같이 A에 추가하면 되므로 B의 인덱스를 A와 B의 길이 차이 만큼 1씩 옮겨가면 각 경우에 두 문자열의 차이를 구하여 가장 작은 값을 출력한다.

 

PYTHON

A, B = input().split()
min=len(A)
for j in range(len(B)-len(A)+1):
    count=0
    for i in range(len(A)):
        if A[i] != B[i+j]:
            count+=1
    if count < min:
        min =count
print(min)
Comments