코딩테스트 연습 - 문자열 압축 | 프로그래머스 (programmers.co.kr)
코딩테스트 연습 - 문자열 압축
데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문
programmers.co.kr
내가 혼자힘으로 풀 수 있는 몇 안되는 문제 중 하나.
문자열을 1부터 시작해서 k를 증가시켜가면서 다 압축해보고 길이를 재야한다.
핵심은 압축 알고리즘인데,
나는 이렇게했다.
1. 문자열에서 k길이만큼의 부분문자열을 따온다. part라고 지칭
2. 이전에 따왔던 문자열(save라고 지칭)과 part를 비교해서 같으면 count를 1증가시킨다. count는 몇 번 반복되는지 세는 변수.
3. save와 part가 다르면 str(count)+save를 정답에 추가하고 save=part로 바꾼다. count도 1로 초기화.
이때 만약 count가 1이면 save만 정답에 추가한다.
def compress(s, k):
comp = ""
save = ""
i = 0
count = 1
while i < len(s):
part = s[i:i+k]
if save == part:
count += 1
elif count == 1:
comp += save
count = 1
save = part
else:
comp += str(count) + save
count = 1
save = part
i += k
if count == 1:
comp += save
else:
comp += str(count) + save
return comp
def solution(s):
answer = 9999999999
for i in range(1, len(s)+1):
c = compress(s, i)
answer = min(answer, len(c))
return answer
'코딩 테스트 및 알고리즘 > 이것이 취업을 위한 코딩테스트다' 카테고리의 다른 글
Q12. 기둥과 보 설치 (2020 카카오 기출) (0) | 2022.03.22 |
---|---|
Q10. 자물쇠와 열쇠 (2020 카카오 기출) (0) | 2022.03.21 |
Q06. 무지의 먹방 라이브 (2019 카카오 기출) (0) | 2022.03.20 |
Q30 가사 검색 (2020 카카오 신입 공채 기출) (0) | 2022.03.19 |
Q25. 실패율 (2019 카카오 신입 공채 기출) (0) | 2022.03.18 |