코딩테스트 연습 - 문자열 압축
데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자
programmers.co.kr
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 |