두 개의 영문 문자열 s와 t가 주어졌다고 가정해 봅시다. 문자열에는 소문자와 대문자가 섞여 있을 수 있습니다. 이 문제의 목표는 한 문자열이 다른 문자열을 회전(rotation)시킨 결과인지 판별하는 것입니다.
예를 들어, 입력이 s = "koLKAta", t = "KAtakoL"이라면 출력 결과는 True가 됩니다.
해결 접근 방법
이 문제는 다음 단계를 거쳐 해결할 수 있습니다.
- 먼저
s와t의 길이를 비교합니다. 길이가 다르면 회전 관계일 수 없으므로 False를 반환합니다. s를 자기 자신과 연결합니다. 즉,s = s + s를 수행합니다.- 연결된 문자열 안에
t가 포함되어 있는지 확인하고, 포함되어 있으면 True, 그렇지 않으면 False를 반환합니다.
동작 원리
문자열 s를 두 번 이어 붙이면 s에서 만들어질 수 있는 모든 회전 결과가 반드시 그 안에 포함됩니다. 따라서 t가 s + s의 부분 문자열인지만 검사하면, 별도의 복잡한 로직 없이도 t가 s의 회전인지 손쉽게 판별할 수 있습니다.
예제 코드
아래 구현 예제를 통해 더 자세히 이해해 보겠습니다.
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