-
구현 알고리즘 : 문자열 압축 - 파이썬 (python)알고리즘/구현 2021. 6. 24. 02:27
https://programmers.co.kr/learn/courses/30/lessons/60057?language=python3
* 아이디어
(1) 문자열을 1개, 2개, ..., n개로 나누어서 리스트 형태로 result에 저장
(2) result[x]와 result[x+1]을 비교해서 같으면 count 변수를 1 증가
(3) 같지 않으면 s_result에 결과값 저장 (count가 2 이상인 경우에만 앞에 숫자를 붙인 후 result[x]를 덧붙여줌)
(4) out of index 방지를 위하여 len(result)-1번만 result[x], result[x+1] 비교
이 조건이 없으면 마지막 result의 마지막 원소를 비교할 때 오류 발생
(5) 마지막 문자열 붙여주는 과정을 else문에서 수행
(6) s가 한글자인 경우에는 result_array = []이 되므로 이 경우 answer에 1을 저장
(7) 위 경우를 제외하고는 저장된 값 중 min 값을 answer에 저장
처음에 제출하고 테스트케이스 5번만 오류가 났는데 문자열을 하나 입력한 경우였다
a 입력했을 때 1이 출력되도록 추가하니까 성공 !
def solution(s): answer = 0 count = 1 s_result = "" result_array = [] for j in range(1, len(s)): result = [] for i in range(0, len(s), j): result.append(s[i:i + j]) #print(result) for x in range(len(result)): if x < len(result) - 1: if result[x] == result[x+1]: count += 1 continue if result[x] != result[x+1]: if count != 1: s_result += (str(count)) s_result += (result[x]) count = 1 elif result[x-1] == result[x]: continue else: s_result += result[x] else: if count != 1: s_result += (str(count)) s_result += (result[x]) count = 1 #print(s_result) result_array.append(len(s_result)) s_result = "" if not result_array: answer = 1 else: answer = min(result_array) #print(answer) return answer
https://github.com/501501/codingTest/blob/master/%EA%B5%AC%ED%98%84/A09.py
'알고리즘 > 구현' 카테고리의 다른 글
구현 알고리즘 : 뱀 - 파이썬 (python) (0) 2021.10.25 구현 알고리즘 : 자물쇠와 열쇠 - 파이썬 (python) (0) 2021.07.06 구현 알고리즘 : 문자열 재정렬 - 파이썬 (python) (0) 2021.06.23 구현 알고리즘 : 럭키 스트레이트 - 파이썬 (python) (0) 2021.06.23 구현 알고리즘 : 게임 개발 - 파이썬 (python) (0) 2021.06.23