문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
- 문자열을 압축하는 최대 길이는 len(s) // 2 이므로 하나부터 len(s) // 2 의 길이만큼 차례대로 잘라 가면서 앞 뒤 문자열이 같은지 하나씩 확인한다.
- 앞 뒤 문자열이 같다면 반복되는 문자열 횟수와 문자열을 붙인다.
- 앞 뒤 문자열이 같지 않다면 숫자 없이 문자열을 붙인다.
- 남은 마지막 문자열에 대한 처리 또한 위와 같이 한 후, 문자열을 압축할 때 마다의 길이를 하나씩 확인하여 최소 길이를 출력
코드
s = 'abcabcdede'
def solution(s):
result_len = len(s)
s_len = len(s) // 2
for i in range(1, s_len + 1):
cnt = 1
result = ''
prev = s[:i]
for j in range(i, len(s), i):
now = s[j:j+i]
if prev == now:
cnt += 1
else:
if cnt >= 2:
result += str(cnt) + prev
else:
result += prev
prev = now
cnt = 1
# 남은 문자열 처리
if cnt >= 2:
result += str(cnt) + prev
else:
result += prev
result_len = min(result_len, len(result))
return result_len
print(solution(s))'Algorithm > Simulation' 카테고리의 다른 글
| [Python] 백준 2477번 참외밭 (1) | 2023.05.03 |
|---|---|
| [Python] 백준 14503번 로봇 청소기 (1) | 2023.03.29 |
| [Python] 백준 18406번 럭키 스트레이트 (0) | 2023.01.30 |
| [Python] 치킨배달 (1) | 2023.01.26 |
| [Python] 뱀 (0) | 2023.01.25 |