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

Python에서 한 문자열이 다른 문자열의 접미사인지 확인하는 방법

문제 정의

두 개의 문자열 st가 주어졌을 때, s가 t의 접미사(suffix)인지 확인하는 문제입니다. 접미사란 어떤 문자열의 끝부분에 해당하는 부분 문자열을 의미합니다.

예를 들어, 입력이 s = "ate", t = "unfortunate"라고 한다면, "unfortunate"는 "...nate"로 끝나기 때문에 "ate"가 그 접미사에 해당합니다. 따라서 출력은 True가 됩니다.

해결 접근 방식

이 문제는 두 문자열을 뒤에서부터 한 글자씩 비교하는 방식으로 해결할 수 있습니다. 구체적인 단계는 다음과 같습니다.

  • s_len := s의 길이로 설정
  • t_len := t의 길이로 설정
  • 만약 s_len > t_len이라면, s가 t보다 길어서 접미사일 수 없으므로 False 반환
  • i를 0부터 s_len - 1까지 반복하면서:
    • s[s_len - i - 1]과 t[t_len - i - 1]이 일치하지 않으면 False 반환
  • 모든 문자가 일치했다면 True 반환

즉, 뒤에서부터 s의 모든 문자가 t와 순서대로 일치하는지만 검사하면 됩니다.

구현 예제

아래 코드를 통해 위 알고리즘을 더 쉽게 이해할 수 있습니다.

def solve(s, t):
    s_len = len(s)
    t_len = len(t)
    if (s_len > t_len):
        return False
    for i in range(s_len):
        if(s[s_len - i - 1] != t[t_len - i - 1]):
            return False
    return True

s = "ate"
t = "unfortunate"
print(solve(s, t))

입력

"ate", "unfortunate"

출력

True

참고: endswith() 메서드 활용하기

실무에서는 위와 같이 직접 구현하지 않고, 파이썬에서 기본 제공하는 문자열 메서드인 endswith()를 사용하면 훨씬 간결하게 처리할 수 있습니다.

t = "unfortunate"
s = "ate"

print(t.endswith(s))  # True

endswith()는 시간 복잡도 면에서도 효율적이며, 대소문자 무시, 시작·끝 범위 지정 등 추가 옵션도 지원하므로 실제 프로젝트에서는 이 메서드를 사용하는 것이 좋습니다.