본문 바로가기

Algorithm/Brute Force

(Python3) - LeetCode (Medium) : 2981. Find Longest Special Substring That Occurs Thrice I

반응형

https://codecollector.tistory.com/manage/newpost/?type=post&returnURL=/manage/posts/

 

티스토리

좀 아는 블로거들의 유용한 이야기, 티스토리. 블로그, 포트폴리오, 웹사이트까지 티스토리에서 나를 표현해 보세요.

www.tistory.com

전수조사를 통해 해결한 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

1. 각 부분 문자열을 key로 빈도수를 value로 할 hash map변수 sub_str_map을 선언 후 모든 부분 문자열의 빈도수를 저장합니다.

 

2. 정답 변수 max_length를 선언 후 -1로 초기화합니다.

📔 풀이과정

sub_str_map의 모든 item에 대해 순회하며 빈도수가 3이상이라면 max_length와 해당 부분 문자열의 길이 중 최댓값을 저장합니다.

📔 정답 출력 | 반환

max_length를 반환합니다.


📕 Code

📔 Python3

class Solution:
    def maximumLength(self, s: str) -> int:
        def special(s:str) -> bool:
            for i in range(1, len(s)):
                if s[i] != s[i-1]:
                    return False
            return True
            
        sub_str_map = {}
        for i in range(0, len(s)):
            for j in range(i+1, len(s)+1):
                sub_str = s[i:j]
                if special(sub_str):
                    sub_str_map[sub_str] = sub_str_map.get(sub_str, 0) + 1

        max_length = -1
        for sub_str, occurred in sub_str_map.items():
            if occurred >= 3:
                max_length = max(max_length, len(sub_str))
        
        return max_length

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.