[python] 백준 1120번 문자열알고리즘/백준2022. 2. 27. 22:41
Table of Contents
문제 풀이
문제 조건을 보면 A의 길이는 B의 길이보다 작다.
A와 B의 길이가 같을 경우 B의 문자열 중에 A의 문자열 중에 어느 문자가 다른지를 판별해주어 개수를 세주면된다.
아래의 그림을 보면 A에 hello, B에 xello가 들어왔을때 for문을 돌려 각각의 요소들이 같은지 다른지를 판별해 개수를 세서 리턴해주면 된다.
A와 B의 길이가 다를 경우 방법은 같은 경우의 방법과 유사하다.
아래의 그림을 보면 A에 abc, B에 topabcoder가 들어왔을때 해당 B의 문자열을 abc로 비교할 수 있는 횟수는 총 8번이다. B의 문자열들을 인덱스 값을 하나씩 증가시켜가며 대조하는 것으로 보면 된다.
총 8번을 비교하여 그 중 최소를 출력해주면 된다.
완성된 코드!!👍😊
def same_len(a, b):
rs = 0
for i in range(len(a)):
if a[i] != b[i]:
rs += 1
return rs
def diff_len(a, b):
c = len(b) - len(a) + 1
rs = list()
for i in range(c):
tot = 0
for j, val in enumerate(b[i:i+len(a)]):
if val != a[j]:
tot += 1
rs.append(tot)
return min(rs)
a, b = input().split()
if len(a) == len(b):
print(same_len(a, b))
else:
print(diff_len(a, b))
'알고리즘 > 백준' 카테고리의 다른 글
[python] 백준 2729번 이진수 덧셈 (0) | 2022.03.01 |
---|---|
[python] 백준 5568번 카드 놓기 (0) | 2022.02.28 |
[python] 백준 7120번 String (12) | 2022.02.21 |
[python] 백준 16499번 동일한 단어 그룹화하기 (0) | 2022.02.20 |
[python] 백준 1269번 대칭 차집합 (0) | 2022.02.04 |
@펄찌 :: Pearl's Story
펄의 일상이 궁금한 사람 요기~
즐거운 하루 되셨으면 좋겠습니다😊