[LeetCode] 1071. Greatest Common Divisor of Strings, Easy

2025. 4. 15. 12:49·CodingTest/LeetCode
반응형

1. 제목

  • 문자열 str1과 str2가 주어질 때, 두 문자열을 구성할 수 있는 최대 문자열 x를 구하라.

2. 해결

function gcdOfStrings(str1: string, str2: string): string {
    if(str1 + str2 !== str2 + str1) return '';

    function gcd(a: number, b: number) {
        return b === 0 ? a : gcd(b, a % b);
    }

    return str1.slice(0, gcd(str1.length, str2.length))
    

    // let isLong1 = str1.length > str2.length ? true : false;
    // let minLength = Math.min(str1.length, str2.length);

    // let p2 =0;
    
    // let ans = '';
    // while(p2 < minLength) {
    //     if(isLong1) {
    //         const target = str2.slice(0, p2+1);
    //         if(str1.replaceAll(target,'').length === 0 && str2.replaceAll(target,'').length === 0) ans = target;
    //     } else {
    //         const target = str1.slice(0, p2+1);
    //         if(str2.replaceAll(target,'').length === 0 && str1.replaceAll(target,'').length === 0) ans = target;
    //     }
    //     p2++;
    // }

    // return ans;
};
  • 첫 풀이는 주석처리했다.
  • 처음 접근 원리는 두 문자열 중 긴 문자열을 찾아 짧은 문자열을 기준으로 1개씩 넓혀가며 두 문자열에 대해 replaceAll을 실행하여 빈 문자열이 되면 답에 담는 식으로 했다.
  • 근데 이렇게 하면, 매 번 두 문자열을 탐색해야 하기 때문에 성능이 좋지 않고, 문제에서 원하는 건 다른 것이였다.
  • 이 문제는 최대 공약수 GCD를 활용하는 문제였다.
    • 두 문제를 앞뒤로 붙인 것이 같지 않으면, 반복되는 X가 없다는 뜻.
    • 반복되는 문자열이 있다면, 그 중 가장 긴 문자열의 길이는 두 문자열의 GCD 길이가 된다.
    • 원본 문자열에서 GCD 길이만큼 잘라내면 된다.
  • 즉, 반복 문자열의 길이는 원래 문자열 길이의 약수여야 한다.
저작자표시 (새창열림)
'CodingTest/LeetCode' 카테고리의 다른 글
  • [LeetCode] 605. Can Place Flowers, Easy
  • [LeetCode] 1431. Kids With the Greatest Number of Candies, Easy
  • [LeetCode] 1768. Merge Strings Alternately
  • [LeetCode] 108. Convert Sorted Array to Binary Search Tree, Easy
뜸부깅
뜸부깅
코딩에 대한 여러 개인적인 생각을 정리하고 공부를 하는 공간입니다!!
  • 뜸부깅
    코오오딩
    뜸부깅
  • 전체
    오늘
    어제
    • Note (429)
      • Skill (31)
        • Java & Spring (9)
        • Javascript & HTML & CSS (0)
        • React (0)
        • Next.js (22)
      • CodingTest (389)
        • 백준 온라인 저지(BOJ) (140)
        • 프로그래머스(Programmers) (79)
        • LeetCode (170)
      • Algorithm & Data Structure (6)
      • [Project] 포트폴리오 (3)
        • Front end (3)
        • Back end (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Easy
    백준7576
    boj2108
    meidum
    알고리즘
    next 14
    자바
    Java
    백준
    백준7576자바
    TypeScript
    leetcode 2236
    프로그래머스
    BOJ
    백준1260
    백준1427
    백준2751
    medium
    component-scan
    boj1427
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
뜸부깅
[LeetCode] 1071. Greatest Common Divisor of Strings, Easy
상단으로

티스토리툴바