import sys
def solution(s):
if len(s) == 1:
return 1
answer = sys.maxsize
for i in range(1, len(s)//2+1):
arr = s[:i]
res = press(s, i, arr)
answer = min(answer, len(res))
return answer
def press(s, div, arr):
count = 1
res = ''
for j in range(div, len(s)+1, div):
if s[j:j+div] == arr:
count += 1
else:
res = res+str(count)+arr if count != 1 else res+arr
arr = s[j:j+div]
count = 1
res = res+str(count)+arr if count != 1 else res+arr
return res
카카오 2020 블라인드
1. 1부터 최대로 자를 수 있는 len(s)//2까지 문자열을 자른다.
- arr : 자른 문자열
- press : 문자열을 압축한 결과 리턴 (div만큼 문자열 잘라서 검사, res : 축약한 문자열)
- res의 결과가 가장 작은 값의 길이로 answer 초기화
2. res 출력
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv2 - 124 나라의 숫자 (파이썬) (0) | 2022.03.30 |
---|---|
[프로그래머스] Lv2 - 멀쩡한 사각형 (파이썬) (0) | 2022.03.29 |
[프로그래머스] Lv1 - 직사각형 별찍기 (파이썬) (0) | 2022.03.27 |
[프로그래머스] Lv1 - x만큼 간격이 있는 n개의 숫자 (파이썬) (0) | 2022.03.27 |
[프로그래머스] Lv1 - 행렬의 덧셈 (파이썬) (0) | 2022.03.26 |