728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/60057
1글자씩 묶을 때, 2글자씩 묶을 때, . . . 각각을 다 계산해보고 가장 작은 값을 출력하도록 했다
내가 짠 코드는 실행이 안 돼서 결국 다른 코드를 참고했다
def solution(s):
result=[]
if len(s)==1:
return 1
for i in range(1, len(s)//2+1):
b=''
cnt=1
tmp=s[:i] #시작부터i개만큼의 문자열
for j in range(i, len(s), i): #i부터 끝까지 i개씩 뛰어넘음
if tmp==s[j:i+j]: #비교해서 같은경우
cnt+=1 #압축한 문자열 개수
else: #비교해서 다른 경우
if cnt!=1: #압축한 것이 1개 이상일 때
b=b+ str(cnt)+tmp #개수+문자열로 저장
else: #압축한 것이 1개일 때
b=b+tmp #문자열만 저장
tmp=s[j:j+i] #기준 문자열 변경
cnt=1 #압축한 문자열 개수 1로 초기화
#마지막 문자열을 더해주는 과정
if cnt!=1:
b=b+str(cnt)+tmp
else:
b=b+tmp
result.append(len(b))
return min(result)
s=input()
print(solution(s))
이 코드를 이해하려고 종이에 시작부터 끝까지의 모든 과정을 손으로 써가면서 이해함..;;
능지가 점점 떨어지는듯
728x90
반응형
'코딩 > 이코테-파이썬' 카테고리의 다른 글
이코테 구현: 자물쇠와 열쇠 (0) | 2022.08.29 |
---|---|
이코테: 구현 - 자물쇠와 열쇠 (0) | 2022.08.29 |
무지의 먹방라이브 (2) | 2022.08.24 |
알고리즘 기출문제: 그리디2 (1) | 2022.08.17 |
알고리즘 기출문제: 그리디 (0) | 2022.08.16 |
댓글