본문 바로가기
IT/알고리즘

76] ★ Leetcode 1071. Greatest Common Divisor of Strings Kotlin

by 깻잎쌈 2023. 4. 11.
반응형

https://leetcode.com/problems/greatest-common-divisor-of-strings/description/

 

Greatest Common Divisor of Strings - LeetCode

Can you solve this real interview question? Greatest Common Divisor of Strings - For two strings s and t, we say "t divides s" if and only if s = t + ... + t (i.e., t is concatenated with itself one or more times). Given two strings str1 and str2, return t

leetcode.com

두 문자열이 주어졌을때,  반복해서 나열했을때 두 문자열을 만들 수 있는 문자열을 찾는 문제다.

 

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
    }

}

최대공약수, 공통되는 문자열

이런 단어가 나오면 숫자로 접근해야할듯하다.

반응형

댓글