07. 문자열 압축
코딩테스트 연습 > 2020 KAKAO BLIND RECRUITMENT > 문자열 압축
https://programmers.co.kr/learn/courses/30/lessons/60057
Input value =
Process =
Output value =
s의 길이는 1 이상 1,000 이하입니다.
s는 알파벳 소문자로만 이루어져 있습니다.
#00
s = "aabbaccc"
#01
answer = []
for i in range(1,len(s)+1):
#02
array = []
for j in s:
if len(array)==0 or len(array[-1][0])==i:
array.append([j,1])
else:
array[-1][0]+=j
#03
sumss = []
for k in array:
if len(sumss)==0 or k[0] != sumss[-1][0]:
sumss.append([k[0],1])
else:
sumss[-1][1]+=1
#04
count = 0
for q in sumss:
count+=len(q[0])
if q[1] > 1:
count+=len(str(q[1]))
answer.append(count)
#05
min(answer)
def solution(s):
answer = []
for i in range(1,len(s)+1):
array = []
sumss = []
count = 0
for j in s:
if len(array)==0 or len(array[-1][0])==i:
array.append([j,1])
else:
array[-1][0]+=j
for k in array:
if len(sumss)==0 or k[0] != sumss[-1][0]:
sumss.append([k[0],1])
else:
sumss[-1][1]+=1
for q in sumss:
count+=len(q[0])
if q[1] > 1:
count+=len(str(q[1]))
answer.append(count)
return min(answer)
위의 2,3 과정을 좀 더 압축할 수 있을 것이라 판단하여 작성해보았으나, 테스트케이스만 통과했다...
앞으로는 Data processing flow chart를 작성하여 생각을 정리해야겠다.