728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/60057
코딩테스트 연습 - 문자열 압축
데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문
programmers.co.kr
풀이
먼저 answer값을 문자열의 최대길이로 설정하고 s의 길이가 1이면 바로 1리턴하기
1. i개로 문자열 압축하기
2. 처음 i개의 문자열 a에 저장하기(다음 문자열과 비교하기 위해)
3. i부터 len(s)-1까지 i개로 늘어나는 for문을 돌려 다음 i개의 문자열과 이전 문자열 비교하기
4. 만약 이전 값과 같으면 cnt+=1
5. 이전 값과 다르고 cnt가 1이면 이전 문자열만 temp에 추가하기
6. 이전 값과 다르고 cnt가 1이 아니면 cnt와 a를 temp에 추가( 여기서 cnt는 문자열로 변환후 추가하기)
7. 자르고 남은 부분 처리하기
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
|
def solution(s):
# 문자열 최대길이를 초기값으로 설정
answer = 1000
# s의 길이가 1이면 최소길이가 1이기 때문에 1을 리턴
if len(s)==1:
return 1
# 1개부터 s길이의 절반까지 압축하며 확인
for i in range(1,len(s)//2+1):
temp=''
cnt=1
a=s[:i] # 초기 비교값 설정
for j in range(i,len(s),i):
if s[j:j+i]==a:
cnt+=1
else:
if cnt==1:
temp+=a
else:
temp+=str(cnt)+a
a=s[j:i+j]
cnt=1
# 남아있는 문자열 처리하기
if cnt==1:
temp+=a
else:
temp+=str(cnt)+a
answer=min(answer, len(temp))
return answer
|
cs |
728x90
반응형
'Python3 > 프로그래머스' 카테고리의 다른 글
2022.06.05 [프로그래머스] (python 파이썬) 2Xn 타일링 (0) | 2022.06.05 |
---|---|
2022.06.04 [프로그래머스] (python 파이썬) 멀쩡한 사각형 (0) | 2022.06.04 |
2022.06.01 [프로그래머스] (python 파이썬) 문자열 내 p와 y의 개수 (0) | 2022.06.01 |
2022.06.01 [프로그래머스] (python 파이썬) 문자열 내 마음대로 정렬하기 (0) | 2022.06.01 |
2022.06.01 [프로그래머스] (python 파이썬) 행렬의 덧셈 (0) | 2022.06.01 |
댓글