알고리즘 문제 풀이: 자바/LeetCode

1071. Greatest Common Divisor of Strings

hueco 2025. 10. 29.

📌 문제 링크 :

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

 

내 풀이(Success) :

class Solution {
    public String gcdOfStrings(String str1, String str2) {
        if (!(str1 + str2).equals(str2 + str1)) {
            return "";
        }
        int gcdLength = gcd(str1.length(), str2.length());
        return str1.substring(0, gcdLength);
    }

    private int gcd(int a, int b) {
        return b == 0 ? a : gcd(b, a % b);
    }
}

 

🧐 리뷰 :

문제를 읽고 단순히 문자열을 순회하면서 비교를 해서 판별해야 되는 것인지 잠시 고민했지만 마땅히 해결책이 보이지 않았다.

GPT에게 문제의 링크를 주고 풀이법을 알려달라고 하기 보단 문제를 말로 풀어서 설명하고 문제를 어떻게 접근하면 될지 가이드를 요청했다.

작성해준 수도코드를 기반으로 코드를 작성하여 문제를 해결할 수 있었다.

 

문제를 풀고나서 최대공약수를 이용한 접근법도 좋았지만, 이 문제가 최대공약수 문자열을 갖는지를 판별하는 조건문의 아이디어가 더 좋았다.

두 문자열을 서로 다른 순서로 더하고 그 결괏값이 같은지를 비교하여 공약수 문자열이 존재하는지 판별할 수 있다는 점이 간단하지만 미쳐 생각하지 못한 부분이라서 재미있는(?) 포인트였다.

 

'알고리즘 문제 풀이: 자바 > LeetCode' 카테고리의 다른 글

1732. Find the Highest Altitude  (0) 2025.11.01
2215. Find the Difference of Two Arrays  (0) 2025.10.31
643. Maximum Average Subarray I  (0) 2025.10.30
1768. Merge Strings Alternately  (0) 2025.10.28
392. Is Subsequence  (0) 2025.10.27

댓글