Programming/LeetCode
[Dart] 1071. Greatest Common Divisor of Strings
Meezzi
2025. 4. 25. 09:34
728x90
1. 문제
2. 요구사항
1) 두 문자열 str1과 str2가 주어졌을 때 가장 큰 공약수를 찾아야 한다.
2) 두 문자열의 공약수는 두 문자열을 여러 번 반복해서 만들 수 있는 문자열이다.
3. 코드
class Solution {
String gcdOfStrings(String str1, String str2) {
// 문자열을 이어붙였을 때 결과가 다르면 공통된 패턴이 없음
if (str1 + str2 != str2 + str1) return '';
// 유클리드 호제법을 이용한 최대공약수(GCD) 계산
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
// str1과 str2의 길이의 최대공약수를 구함
int gcdLength = gcd(str1.length, str2.length);
// str1에서 0부터 gcdLength만큼 잘라 반환
return str1.substring(0, gcdLength);
}
}
728x90