티스토리 뷰
Algorithm/Implementation
(Python) - 프로그래머스(2020 KAKAO BLIND RECRUITMENT) : 문자열 압축
하눤석 2022. 1. 17. 12:46728x90
https://programmers.co.kr/learn/courses/30/lessons/60057
- 풀이 :
주어진 문자열을 조건에 맞게 압축하여 가장 짧게 압축할 수 있는 길이를 출력하면 된다.
- 해설 :
직관적으로 접근하면 쉽게 해결할 수 있는 문제이다. 문자열 s의 절반만큼의 길이만큼 잘라주며 반복되는 구간이 나온다면 합쳐주면 된다. 어려웠던 부분은 중복되는 부분이 없거나 (구간반복 cnt가 1일떄) 문자열의 끝까지 반복할때 예외처리 하는것이 까다로웠다.
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 31 32 | def summarize(s): l = len(s) if l == 1: return 1 ans = 1001 for i in range(1,l//2+1): answer = '' cnt = 1 for m in range(i,l,i): prev = s[m-i:m] curr = s[m:m+i] if prev == curr: cnt += 1 else: if cnt == 1: answer += prev else: answer += str(cnt) + prev cnt = 1 if cnt == 1: answer += curr else: answer += str(cnt) + curr if ans > len(answer): ans = len(answer) return ans def solution(s): answer = 0 return summarize(s) | cs |
320x100
'Algorithm > Implementation' 카테고리의 다른 글
(Python) - 프로그래머스 (2021 카카오 채용연계형 인턴쉽) : 숫자 문자열과 영단어 (0) | 2022.01.17 |
---|---|
(Python) - 프로그래머스(2019 KAKAO BLIND RECRUITMENT) : 오픈채팅방 (0) | 2022.01.17 |
(Python) - 프로그래머스(2021 KAKAO BLIND RECRUITMENT) : 신규 아이디 추천 (0) | 2022.01.17 |
(Python) - 프로그래머스 : 로또의 최고 순위와 최저 순위 (0) | 2022.01.17 |
(Python) - 프로그래머스(2022 KAKAO BLIND RECRUITMENT) 1번 : 신고 결과 받기 (0) | 2022.01.17 |
댓글
© 2022 WonSeok, All rights reserved