Search

String Compression

문제 설명 : 조건에 맞도록 압축 문자열을 구성 후, 기존 주어진 배열에 설정한다.
풀이 방법
간단한 구현에 가까웠던 문제였던 것 같다.
우선 새로운 압축 문자열을 기존 배열의 뒷 공간에 append 해준 후, 기존 위치에 Overwrite하는 방식을 사용하였다.
시간복잡도 : O(N)O(N)
성공 코드
class Solution: def compress(self, chars: List[str]) -> int: prev_char = chars[0] char_count = 0 len_chars = len(chars) for i in range(len_chars): # 다른 문자열일 때 if prev_char != chars[i]: # 문자열 정보 추가 chars.append(prev_char) # 동일 문자열이 1개 이상일 때 if char_count > 1: chars += list(str(char_count)) # 정보 초기화 prev_char = chars[i] char_count = 1 else: char_count += 1 # 마지막 문자에 대한 처리 chars.append(prev_char) if char_count > 1: chars += list(str(char_count)) # 압축 문자열 길이 len_new_word = len(chars) - len_chars # 배열의 뒤쪽에 추가된 압축 문자열을 배열의 시작 부분에 overwrite for i in range(len_new_word): chars[i] = chars[i + len_chars] # 압축된 문자열을 제외한 문자는 삭제 for _ in range(len(chars) - len_new_word): chars.pop()
Python
복사