[프로그래머스 연습] 문자열 압축 (Python)
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/60057
* 2020 KAKAO BLIND RECRUITMENT 문제
def solution(s):
cand = [len(s)]
for i in range(1, len(s)): #size
split = [s[j:j+i] for j in range(0,len(s),i)]
cnt = 1
res = ""
# check duplicate
for k in range(1,len(split)): #0-7
prev, cur = split[k-1], split[k]
if prev == cur:
cnt += 1
else:
if cnt > 1:
res += (str(cnt) + prev)
else:
res += prev
cnt = 1
if cnt > 1:
res += (str(cnt) + split[-1])
else:
res += split[-1]
cand.append(len(res))
return min(cand)
+ 구글링 하다보니 groupby라는 함수를 찾아서 사용해봤다..!
Python Itertools 의 groupby 함수 사용한 버전 => 효율성 테스트 하는 경우에는 안쓰는 것이 적합!
from itertools import groupby
def solution(s):
cand = [len(s)]
for i in range(1, len(s)): #size
split = [s[j:j+i] for j in range(0,len(s),i)]
cnt = 1
res = ""
for k, g in groupby(split):
dup = list(g)
if len(dup) > 1:
res += str(len(dup)) + k
else:
res += k
# print(res)
cand.append(len(res))
return min(cand)
728x90
반응형
'Coding Test Prep' 카테고리의 다른 글
[프로그래머스 연습] 수식 최대화 (Python) (0) | 2021.09.11 |
---|---|
[프로그래머스 연습] 두 정수 사이의 합 (Python) (0) | 2021.09.11 |
[프로그래머스 연습] 올바른 괄호 (Python) (0) | 2021.09.11 |
[프로그래머스 연습] 오픈채팅방 (Python) (0) | 2021.09.11 |
Codility Developer Training Lesson 1번 (0) | 2021.08.15 |
댓글
이 글 공유하기
다른 글
-
[프로그래머스 연습] 두 정수 사이의 합 (Python)
[프로그래머스 연습] 두 정수 사이의 합 (Python)
2021.09.11 -
[프로그래머스 연습] 올바른 괄호 (Python)
[프로그래머스 연습] 올바른 괄호 (Python)
2021.09.11 -
[프로그래머스 연습] 오픈채팅방 (Python)
[프로그래머스 연습] 오픈채팅방 (Python)
2021.09.11 -
Codility Developer Training Lesson 1번
Codility Developer Training Lesson 1번
2021.08.15