티스토리 뷰
코딩테스트 연습 - 문자열 압축
데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문
programmers.co.kr
POINT
반복되는 변수 파악하기
k개로 문자를 자를 때, 앞의 문자(prev_str)와 뒤의 문자(curr_str)의 index 값이 어떻게 변하는가?
예외 처리
- 문자 길이가 1일 때는 정답이 1이다.
참고
- 문자 길이를 초과하는 인덱스를 입력하면, 아무것도 나오지 않는다 (에러가 발생하진 않는다).
str = "aabbaccc"
print(str[8:9]) #
풀이
def solution(s):
# (예외) 문자 길이가 1인 경우
if (len(s) == 1): return 1
answer = [] # 압축한 문자의 길이를 담은 배열
for k in range(1, len(s)//2 + 1): # 전체 문자 길이의 반까지만 자르기
new_str = "" # 압축 문자
count = 1
for i in range(0, len(s), k):
prev_str = s[i : i+k]
curr_str = s[i+k : i+2*k]
if (prev_str == curr_str): count += 1
else:
if (count > 1):
new_str += (str(count) + prev_str)
else: new_str += prev_str
count = 1 # 초기화
answer.append(len(new_str))
return min(answer)
'🧩 알고리즘' 카테고리의 다른 글
[프로그래머스 Lv.2] 거리두기 확인하기 - Python (0) | 2022.07.01 |
---|---|
[프로그래머스 Lv.1] 체육복 - Python (0) | 2022.06.23 |
[프로그래머스] 합승 택시 요금 - Python (0) | 2022.03.14 |
[백준] 2638 치즈 - Python (0) | 2022.03.06 |
[백준] 3190 뱀 - Python (0) | 2022.03.03 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- backtracking
- Unsplash
- 코딩테스트
- python
- 코어자바스크립트
- flutter
- rn
- Python3
- 코드분석
- fetch
- React-native
- 이벤트루프
- 백트래킹
- 비동기
- p5js
- 문제풀이
- nodeJS
- 다이나믹프로그래밍
- node.js
- React
- javascript
- 파이썬
- dfs
- 백준
- Spotify
- React.js
- 프로그래머스
- DP
- 코테
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함