공부-코딩테스트/코테풀이 - 자바, 파이썬
문자열 압축 (코딩테스트, 프로그래머스)
령과
2022. 1. 24. 11:26
문제
https://programmers.co.kr/learn/courses/30/lessons/60057
코딩테스트 연습 - 문자열 압축
데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문
programmers.co.kr
나의 코드
def solution(s):
answer=len(s)
for i in range(1,len(s)//2+1):
tmp=s #슬라이싱 해야되니 기존 s를 보호하기 위해 tmp선언
count=1 #몇번 반복됬는지 확인
tmp_str="" #압축한 뒤의 str, 길이확인에 필요
while len(tmp)>i: #슬라이싱 길이 만큼 남아있을 때까지 반복
tmp_slice=tmp[:i] #슬라이싱
tmp=tmp[i:]
if tmp_slice==tmp[:i]: #압축 가능?
count+=1
else: #압축불가
if count==1: #압축된 것이 없다면 그냥 붙이기
tmp_str+=tmp_slice
else: #압축된 것 있다면
tmp_str+=str(count)+tmp_slice#압축횟수도 기입
count=1
if count==1: #마지막 부분이 붙기전에 while문에 빠져나와서 추가
tmp_str+=tmp
else:
tmp_str+=str(count)+tmp
answer=min(answer,len(tmp_str))
return answer
단순 구현 문제, 다만 마지막 부분 while문에 빠져나오는 부분 처리가 필요한지 몰라서 찾는데 시간이 들었다.