Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 두 문자열을 연결해 특정 문자열을 만들 수 있는지 확인하는 방법

두 개의 문자열 st, 그리고 결과 문자열 r이 주어졌을 때, rs + t 또는 t + s로 만들어질 수 있는지 확인하는 문제를 살펴보겠습니다. 여기서 +는 문자열 연결(concatenation)을 의미합니다.

예를 들어, 입력이 s = "world", t = "hello", r = "helloworld"라면 출력은 True가 됩니다. 왜냐하면 "helloworld"(r)는 "hello"(t)와 "world"(s)를 연결한 것과 같기 때문입니다.

해결 접근 방법

이 문제는 다음 단계를 통해 해결할 수 있습니다.

  • 먼저 r의 길이가 st의 길이 합과 같은지 확인합니다. 다르면 즉시 False를 반환합니다.
  • rs로 시작하고 t로 끝난다면 True를 반환합니다.
  • rt로 시작하고 s로 끝난다면 True를 반환합니다.
  • 위 조건 중 어느 것도 만족하지 않으면 False를 반환합니다.

길이 검사를 먼저 수행하면 불필요한 문자열 비교 연산을 줄일 수 있어 효율적입니다. Python의 내장 메서드인 startswith()endswith()를 활용하면 코드를 간결하게 작성할 수 있습니다.

예제 코드

def solve(s, t, r):
    if len(r) != len(s) + len(t):
        return False

    if r.startswith(s):
        if r.endswith(t):
            return True

    if r.startswith(t):
        if r.endswith(s):
            return True

    return False

s = "world"
t = "hello"
r = "helloworld"
print(solve(s, t, r))

입력

"world", "hello", "helloworld"

출력

True

코드 설명

위 코드에서 solve() 함수는 세 개의 문자열을 매개변수로 받습니다. 첫 번째 조건문에서 r의 길이가 st 길이의 합과 일치하는지 검사하여, 일치하지 않으면 더 이상 비교할 필요 없이 False를 반환합니다. 이후 startswith()endswith() 메서드를 사용해 두 가지 연결 순서(s + tt + s)를 모두 확인합니다. 시간 복잡도는 O(n)이며, n은 문자열 r의 길이입니다.