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의 차이를 최소로 하는 프로그램을 작성하시오.
입력
첫째 줄에 A와 B가 주어진다. A와 B의 길이는 최대 50이고, A의 길이는 B의 길이보다 작거나 같고, 알파벳 소문자로만 이루어져 있다.
출력
A와 B의 길이가 같으면서, A와 B의 차이를 최소가 되도록 했을 때, 그 차이를 출력하시오.
풀이
앞 뒤 아무거나 추가 할 수 있으므로, 남는칸을 모두 B에 맞춰서 문자를 추가할 수 있다.
따라서 A를 B의 처음부터 끝까지 위치를 이동시켜가면서 비교한 뒤, 가장 많이 맞을때 앞, 뒤에다가 문자를 추가한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# [파이썬 | BOJ | 1120] 문자열
import sys
read = sys.stdin.readline
def solve(A, B):
global maxAns
cnt = 0
maxAns = sys.maxsize * -1
while True:
ans = 0
length = len(A)
for i in range(length):
if A[i] == B[i]:
ans += 1
if maxAns < ans:
maxAns = ans
cnt += 1
A = ' ' + A
if length == len(B):
return
A, B = map(str, read().split())
solve(A,B)
print(len(A)-maxAns)
|
cs |
'알고리즘' 카테고리의 다른 글
[파이썬 | BOJ | 16397] 탈출 (0) | 2020.05.01 |
---|---|
[파이썬 | BOJ | 1620] 나는야 포켓몬 마스터 이다솜 (0) | 2020.04.30 |
[파이썬 | BOJ | 17140] 이차원 배열과 연산 (0) | 2020.04.29 |
[파이썬 | BOJ | 9375] 패션왕 신해빈 (0) | 2020.04.29 |
[파이썬 | BOJ | 17822] 원판 돌리기 (0) | 2020.04.29 |