1. 잘라놓고 비교
def text_coding(s, num):
output = len(s)
datalist = list(map(''.join, zip(*[iter(s)]*num)))
datalist.append('A') #dummy
prev = datalist[0]
cnt = 0
for i in datalist:
if prev == i:
cnt += 1
else:
if cnt >= 2:
output = output - num*cnt + len(str(cnt)) + num
cnt = 1
prev = i
return output
def solution(s):
answer = []
for i in range(1, (len(s) // 2) + 1):
answer.append(text_coding(s,i))
answer.append(len(s))
return min(answer)
문자열 동일한 길이로 자르기
datalist = [s[i : i + num] for i in range(0, len(s), num)]
datalist = list(map(''.join, zip(*[iter(s)]*num)))
2. 자르면서 비교 (빠름)
def text_coding(s, num):
tmp = len(s)
out = []
prev = s[0:num]
cnt = 0
for i in range(0,len(s),num):
cur = s[i:i+num]
if prev == cur:
cnt += 1
else:
if cnt >= 2:
tmp -= cnt*num
tmp += num + len(str(cnt))
cnt = 1
prev = cur
if cnt >= 2:
tmp -= cnt*num
tmp += num + len(str(cnt))
return tmp
def solution(s):
answer = []
for i in range(1, (len(s) // 2) + 1):
answer.append(text_coding(s,i))
answer.append(len(s))
return min(answer)
'Programming > Programmers' 카테고리의 다른 글
[프로그래머스/Python] 짝지어 제거하기(스택) (0) | 2021.01.04 |
---|---|
[프로그래머스/Python] 구명보트(그리디) (0) | 2021.01.04 |
[프로그래머스/Python] 소수찾기(완전탐색) (0) | 2021.01.03 |
[프로그래머스/Python] 괄호변환(재귀/구현) (0) | 2021.01.03 |
[프로그래머스/Python] 기능개발(큐) (0) | 2021.01.03 |