프로그램
[파이썬] 문제 : 두 문자열을 입력 받아 일치하는 문자열 겹치기
오디세이99
2022. 11. 14. 19:42
728x90
반응형
문제 : 두 문자열 A, B를 입력 받아 A의 뒷부분과 B의 앞부분이 일치하는 부분을 겹쳐서 하나의 문자열을 만듬
overlap(A, B) 함수를 만들어 C를 반환한다.
# a = 'commu' b = 'mummy' = commummy
# a = 'boxok' b = 'xbox' = boxokxbox
# a = 'tttttt' b = 'tttttt' = tttttt
# a = 'waycom' b = 'ycomget' =
def overlap(a, b): # overlap 함수
if a == b: # 인수 두 문자열이 같으면 문자열 a 를 리턴한다.
rtn = a
else: # 인수 두 문자열이 같지 않으면
min_len = len(a) if len(a) < len(b) else len(b) # 두 문자열의 길이가 짧은 길이 찾기
idx = -1 # 두 문자열이 같은 문자의 인덱스 저장용 변수
for i in range(1, min_len): # 두 문자열 중 짧은 문자열의 문자수만큼 반복
# print(a[-i:], '/', b[:i])
if a[-i:] == b[:i]: # a[-1:]은 뒤문자, b[:i]는 앞문자를 비교 해서 같으면
idx = i # 같은 문자 위치(인덱스)를 저장
if idx != -1: # idx가 초기화 값과 같이 않으면 같은 문자열 인덱스가 있다는 것
rtn = a + b[idx:] # a문자열은 그대로 쓰고, b 문자열은 찾은 인덱스 이후 문자들만 사용해 두 문자열을 붙임
else: # idx가 초기화 값과 같으면 a,b 두 문자열에서 같은 것이 없다는 것
rtn = a + b # 같은 문자열이 없음녀 두 문자열을 붙임
return rtn # 리턴
A = input("문자열1 : ") # 입력 받기
B = input("문자열2 : ")
C = overlap(A, B) # 함수를 호출하고, 결과를 C로 받는다.
print(C) # 결과 출력
결과
문자열1 : commu
문자열2 : mummy
commummy
728x90
반응형