반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 딕셔너리
- 에라스토테네스의 체
- 프로그래머스
- programmers
- 수학
- MYSQL
- N과M
- python
- BOJ
- 구현
- 재귀
- 가상메모리 관리
- level3
- 코딩테스트
- 파이썬
- 스택
- 운영체제
- 다이나믹 프로그래밍
- level1
- level0
- DP
- 다익스트라
- 가상메모리
- 힙
- 백준
- dfs
- level2
- BFS
- 그리디
- 브루트포스
Archives
- Today
- Total
동캄의 코딩도장
프로그래머스 level2 [문자열 압축] 파이썬 본문
반응형
https://programmers.co.kr/learn/courses/30/lessons/60057
코딩테스트 연습 - 문자열 압축
데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문
programmers.co.kr
#프로그래머스 문자열 압축
def solution(s):
answer = 0
for i in range(1,(len(s)//2)+1):
cnt=1
lst=[]
j=0
previous=''
while (j+i)<=len(s):
if s[j:j+i]==previous:
cnt+=1
else:
if cnt!=1:
lst.append(cnt-1)
cnt=1
previous=s[j:j+i]
j+=i
if cnt>1:
lst.append(cnt-1)
gain=0
for k in range(len(lst)):
gain+=lst[k]*i-len(str(lst[k]+1))
answer=max(answer,gain)
return len(s)-answer
s길이의 절반까지 반복문을 시행한다. (길이가 절반이상이면 압축 불가능)
1부터 s절반길이까지 반복문을 반복해 나가면서, 문자열 압축 개수를 카운트하여 lst에 담는다.
gain을 통해 압축했을 때 얻는 이득을 구하고, 최종 길이( len(s)-answer)을 리턴한다.
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
프로그래머스 level2 [위장] 파이썬 (0) | 2021.12.10 |
---|---|
프로그래머스 level2 [카펫] 파이썬 (0) | 2021.12.10 |
프로그래머스 level2 [방문 길이] 파이썬 (0) | 2021.12.09 |
프로그래머스 level2 [ [3차] 파일명 정렬] 파이썬 (0) | 2021.12.09 |
프로그래머스 level2 [1차 캐시] 파이썬 (0) | 2021.12.08 |