# [이.취.코] [프로그래머스] Chap 12. 구현 - Q9. 문자열 압축

- Author: @mildsalmon
- Published: 2021-09-15
- Updated: 2021-09-15
- Source: http://blex.me/@mildsalmon/%EC%9D%B4%EC%B7%A8%EC%BD%94-chap-12-%EA%B5%AC%ED%98%84-q9-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%95%95%EC%B6%95
- Tags: 파이썬, 알고리즘, 프로그래머스, 한빛미디어, 나동빈, 코딩테스트, 문제, 풀이, 구현

---

# 1. 문자열 압축

- 난이도
	- 중하
- 풀이 시간
	- 30분
- 시간 제한
	- 1초
- 메모리 제한
	- 128 MB
- 출처
	- [코딩테스트 연습 - 문자열 압축 | 프로그래머스 (programmers.co.kr)](https://programmers.co.kr/learn/courses/30/lessons/60057)

### A. 문제

위 백준 사이트에 접속하여 문제를 확인해주세요.

위 프로그래머스 사이트에 접속하여 문제를 확인해주세요.

### B. 내 답안

```python

def solution(s):  
    # pre = s[0]  
	best_len = len(s)  
  
    for i in range(1, len(s)):  
        pre = s[:i]  
        count = 0  
		answer = ''  
		for j in range(0, len(s)+i, i):  
            now = s[j:j + i]  
            if pre == now:  
                count += 1  
			else:  
                if count > 1:  
                    answer = answer + str(count) + pre  
                else:  
                    answer = answer + pre  
                pre = now  
                count = 1  
		if best_len > len(answer):  
            best_len = len(answer)  
    return best_len

```

##### a. 회고

> 내 풀이

- 단순히 반복하는 방식으로 풀었다. 이런걸 완전 탐색이라고 하던가.

> 반성

- 첫 for문에서 range의 end인자부분을 절반까지 줄여도 된다는 것을 생각하지 못했다.

> 결론

- 여러번 반복하자.

### C. 문제 해설

> 이해한 내용을 바탕으로 작성했습니다.

- 중점적으로 생각해야 할 것.
	- 문자열을 n개씩 자르면서 몇 번 반복되는지 확인하는 것.
	- 문자열 반복을 확인하기 위해 이전 문자열과 현재 문자열을 비교하는 것.
		- 문자열이 같으면 어떻게 처리할지
		- 문자열이 다르면 어떻게 처리할지
- 책에서는 `aabbaccc`에서 이전 문자열과 현재 문자열이 같은데 for문이 끝나서 문자열을 합치지 못할 때를 대비해서 for문 밖에도 `if count > 1: ~ else: ~`를 추가해주었다.
	- 나는 for문을 무조건 이전 문자열과 다를때까지 반복시켜서 해당 코드를 추가하지 않았다.

![](https://static.blex.me/images/content/2021/9/15/9_J3aUDySyucetIGbaSGhK.jpg)

##### a. 책 답안

[python-for-coding-test/3.py at master · ndb796/python-for-coding-test (github.com)](https://github.com/ndb796/python-for-coding-test/blob/master/12/3.py)

# 참고문헌

[1] 나동빈, "이것이 취업을 위한 코딩 테스트다 with 파이썬", 초판, 2쇄, 한빛미디어, 2020년

[2] [2020 KAKAO BLIND RECRUITMENT](https://programmers.co.kr/learn/challenges). [코딩테스트 연습 - 문자열 압축 | 프로그래머스 (programmers.co.kr)](https://programmers.co.kr/learn/courses/30/lessons/60057). Programmers. (accessed Sep 15, 2021)
