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
'Programming > LeetCode' 카테고리의 다른 글
| [Dart] LeetCode 1431. Kids With the Greatest Number of Candies (0) | 2025.05.01 |
|---|---|
| [Dart] 1207. Unique Number of Occurrences (0) | 2025.04.29 |
| [Dart] 872. Leaf-Similar Trees (0) | 2025.04.23 |
| [Dart] 746. Min Cost Climbing Stairs (0) | 2025.04.22 |
| [Dart] 724. Find Pivot Index (0) | 2025.04.21 |