반응형
https://leetcode.com/problems/greatest-common-divisor-of-strings/description/
두 문자열이 주어졌을때, 반복해서 나열했을때 두 문자열을 만들 수 있는 문자열을 찾는 문제다.
class Solution {
fun gcdOfStrings(str1: String, str2: String): String {
fun gcd(a: Int, b:Int): Int = if(b != 0) gcd(b, a % b) else a
// 길이의 최대공약수구하고
val minInt = gcd(str1.length, str2.length)
// 두 문자열이 공동으로 갖는 문자인지 확인
var ans = ""
for(i in 0 until minInt){
if(str1[i] == str2[i])
ans += str2[i]
}
// 반복가능한 문자열이 있다면 몇번 반복되는지 파악
val div1 = str1.length / minInt
val div2 = str2.length / minInt
// 구한 문자열이 실제로 str1, str2에서 반복되는지 확인
var str = ""
for(i in 0 until div2){
str += ans
}
if(str != str2)
ans = ""
// str1도 확인
if(ans != ""){
str = ""
for(i in 0 until div1){
str += ans
}
if(str != str1)
ans = ""
}
return ans
}
}
최대공약수, 공통되는 문자열
이런 단어가 나오면 숫자로 접근해야할듯하다.
반응형
'IT > 알고리즘' 카테고리의 다른 글
78] 1672. Richest Customer Wealth Kotlin (0) | 2023.04.19 |
---|---|
77] Leetcode 1979. Find Greatest Common Divisor of Array #Kotlin (0) | 2023.04.12 |
75] Leetcode 2413. Smallest Even Multiple Kotlin (0) | 2023.04.10 |
74] Leetcode 2574. Left and Right Sum Differences Kotlin (0) | 2023.04.06 |
73] Leetcode 2011. Final Value of Variable After Performing OperationsEasy1.1K151 #Kotlin (0) | 2023.04.05 |
댓글