코딩테스트 파이썬/파이썬 프로그래머스 2단계
문자열 압축
세용용용용
2024. 7. 2. 16:57
수정 : 2024-07-02 [시간 복잡도 추가]


코딩테스트 연습 - 문자열 압축 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 코드
# 2024-07-02
def solution(s):
answer = 1000
if len(s)==1:
return 1
for i in range(1,(len(s)//2)+1):
result = ''
check_dict = {}
for j in range(0, len(s), i):
now_value = s[j:j+i]
if check_dict:
if now_value in check_dict:
check_dict[now_value]+=1
continue
else:
di_key, di_value = list(check_dict.items())[0]
if di_value==1:
result+=di_key
else:
result+=(str(di_value)+di_key)
check_dict.pop(di_key)
check_dict[now_value]=1
di_key, di_value = list(check_dict.items())[0]
if di_value==1:
result+=di_key
else:
result+=(str(di_value)+di_key)
#print(result, check_dict)
answer = min(answer, len(result))
return answer
시간 복잡도
1. for i in range(1,(len(s)//2)+1) : 문자열 길이를 하나씩 늘여가기에 선형시간 [ O(n) ]
2. for j in range(0, len(s), i) : 문자열 길이를 늘여가는 for문이 늘어날수록 시간이 절반으로 줄어드는 로그시간 [