본문 바로가기
프로그램

[파이썬] 문제 : 두 문자열을 입력 받아 일치하는 문자열 겹치기

by 오디세이99 2022. 11. 14.
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
반응형

댓글