오도원입니다.

건강과 행복을 위하여

컴퓨터공학/알고리즘

[백준] 1120. 문자열

오도원공육사 2020. 5. 9. 17:01
반응형

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의 길이는 B의 길이보다 작거나 같다. 이제 A의 길이가 B의 길이와 같아질 때 까지 다음과 같은 연산을 할 수 있다. A의 앞에 아무 알파벳이나 추가한다. A의 뒤에 아무 알파벳이나 추가한다. 이때, A와 B의 길이가 같으

www.acmicpc.net

1. 문제

문자열 A, B가 주어진다. A는 B보다 같거나 짧다.

1. A의 앞에 아무 알파벳을 추가한다.

2. A의 뒤에 아무 알파벳을 추가한다.

 

이때, A와 B의 차이를 최소가 되도록 A를 바꿀 때 그 최소 차이값을 출력하라.

 

2. 접근

어차피 A의 앞과 뒤에는 B와 똑같은 알파벳을 추가하면되므로 고려하지않아도 된다. 그러면 A를 B에 맞춰서 위치를 조정하며 차이가 최소가 될 때를 구하면 된다.

 

3. 소스코드

a, b = input().split()
diff = len(b) + 1 # diff는 최소차이값. len(b) + 1로 초기화해주었다.
for dist in range(len(b)-len(a)+1): # A를 B에 맞춰 위치를 조정하며 차이가 최소가 될 때의 차이값을 구한다.
    count = 0
    for i in range(len(a)): # A와 B의 한글자씩 비교하며 다를 경우 차이값 + 1
        if a[i] != b[i + dist]:
            count += 1
    diff = min(diff, count) # 최소차이값보다 더 작은 차이값을 찾을 경우 갱신
print(diff)
반응형

'컴퓨터공학 > 알고리즘' 카테고리의 다른 글

[백준] 1449. 수리공 항승  (0) 2020.05.09
[백준] 1049. 기타줄  (0) 2020.05.09
[백준] 10610. 30  (0) 2020.05.09
[백준] 2217. 로프  (0) 2020.05.09
[백준] 11399. ATM  (0) 2020.05.09