CS기초/코딩테스트

LeetCode 1209 (Easy) Remove All Adjacent Duplicates in String II

오늘의 나1 2021. 3. 23. 01:06
출처: leetcode.com/problems/remove-all-adjacent-duplicates-in-string-ii/

문제

한글 번역은 아래 더보기를 클릭해주세요.

풀이

class Solution:
    def removeDuplicates(self, s: str, k: int) -> str:
    	# 문자열의 길이가 k보다 작은 경우, k만큼 중복되는 문자는 없으므로 바로 반환
        if len(s) < k:
            return s
        
        stack = []
        dupStr = ''
        dupCnt = 0
        
        # 중복이 있는 지 검사하고 
        # 중복된 문자열을 삭제
        for c in s:
            stack.append(c)
            
            # 문자열이 다르면 dupCtn 1로 리셋
            if (dupStr != c):
                dupCnt = 1
                dupStr = c
            else:
                dupCnt += 1
            
            # dupCnt가 k인 경우 pop하여 삭제
            if dupCnt == k:
                for _ in itertools.repeat(None, k):
                    stack.pop()
        
        result = ''.join(stack)
        
        if result == s: # 검사결과 중복이 없으면 s 반환
            return s
        else: # 검사결과 중복이 있었으면 다시 검사
            return self.removeDuplicates(result, k)

결과