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

파이썬으로 두 문자열이 회전 관계인지 확인하는 프로그램 작성하기

두 개의 영문 문자열 st가 주어졌다고 가정해 봅시다. 문자열에는 소문자와 대문자가 섞여 있을 수 있습니다. 이 문제의 목표는 한 문자열이 다른 문자열을 회전(rotation)시킨 결과인지 판별하는 것입니다.

예를 들어, 입력이 s = "koLKAta", t = "KAtakoL"이라면 출력 결과는 True가 됩니다.

해결 접근 방법

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

  • 먼저 st의 길이를 비교합니다. 길이가 다르면 회전 관계일 수 없으므로 False를 반환합니다.
  • s를 자기 자신과 연결합니다. 즉, s = s + s를 수행합니다.
  • 연결된 문자열 안에 t가 포함되어 있는지 확인하고, 포함되어 있으면 True, 그렇지 않으면 False를 반환합니다.

동작 원리

문자열 s를 두 번 이어 붙이면 s에서 만들어질 수 있는 모든 회전 결과가 반드시 그 안에 포함됩니다. 따라서 ts + s의 부분 문자열인지만 검사하면, 별도의 복잡한 로직 없이도 ts의 회전인지 손쉽게 판별할 수 있습니다.

예제 코드

아래 구현 예제를 통해 더 자세히 이해해 보겠습니다.

def solve(s, t):
    if len(s) != len(t):
        return False
    s = s + s
    return True if s.find(t) != -1 else False

s = "koLKAta"
t = "KAtakoL"
print(solve(s, t))

입력

"koLKAta", "KAtakoL"

출력

True