[LeetCode_443] String Compression(Python)

그냥·2024년 8월 29일

알고리즘

목록 보기
16/23

https://leetcode.com/problems/string-compression/description/?envType=study-plan-v2&envId=leetcode-75

문제


코드

class Solution:
    def compress(self, chars: List[str]) -> int:
        tmp = chars[0]
        cnt = 1
        ans = []
        if len(chars) < 2:
            return 1
        for i in range(1, len(chars)):
            if tmp == chars[i]:
                cnt += 1
            else:
                ans.append(tmp)
                if cnt > 1:
                    ans.extend(list(str(cnt)))
                tmp = chars[i]
                cnt = 1
        ans.append(tmp)
        if cnt > 1:
            ans.extend(list(str(cnt)))
        chars[:] = ans
        return len(chars)

Idea1

  • 길이가 2보다 작다? -> 압축이 필요없이 정답은 1
  • tmp = 0번 인덱스 문자, 1번 인덱스 문자와 비교 시작
    -> 같다면 cnt += 1
    -> 다르면 원본 문자 저장 & cnt가 1 이상이면 리스트(문자열) 형태로 추가(12 -> ['1', '2'])
    -> 다 끝나고 위 과정 한번더 수행

0개의 댓글