Search

Greatest Common Divisor of Strings

문제 설명 : 제공된 두 문자열을 각각 s라고 했을 때, s = t + t + t + ... + t + t 를 만족하는 공통된 t 를 구한다.
풀이 방법
t 조건에 맞는 문자열의 길이가 최대 공약수임을 이용했다.
시간복잡도 : O(N)O(N)
성공 코드
import math class Solution: def gcdOfStrings(self, str1: str, str2: str) -> str: # t조건에 맞는 문자열의 길이는 두 문자열의 최대공약수일 것이다. t_length = math.gcd(len(str1), len(str2)) # 임시로 문자열을 구한다. t = str1[:t_length] # 해당 문자열로 s(str1 / str2)를 각각 만들었을 때, 제공된 문자열과 일치할 경우 정답처리 if (len(str1) // t_length) * t == str1 and (len(str2) // t_length) * t == str2: return t return ""
Python
복사