728x90
🍒문제
programmers.co.kr/learn/courses/30/lessons/60057
🍒풀이
1. 문자열의 절반만큼의 길이만 확인해도 된다.
2. 길이 1 ~ 문자열의 길이/2 길이만큼 반복문으로 검사
3. 이중 반복문으로 pivot이 되는 문자열을 비교 후
3-1. 동일하면 cnt 증가
3-2. 다르면 result 문자열 업데이트 , 새로운 pivot 문자열 업데이트
4. 마지막 문자열의 경우 반복문 마지막에 다시 한 번 검사
5. 최종적으로 result 문자열 길이가 answer보다 작으면 answer 갱신
🍒코드
def solution(s):
answer = 9999
result = ''
size = 1
max_size = int(len(s)/2)
if(len(s) <= 1):
return len(s)
for i in range(1, max_size+1):
res = ''
cur = s[:i] #현재 문자열
cnt = 1 #동일 문자 개수 count
j = i
while(j<len(s)):
if cur == s[j:j+i]:
cnt += 1
else:
if cnt > 1:
res += str(cnt) + cur
else:
res += cur
cur = s[j:j+i]
cnt = 1
j+=i
#마지막 문자열 처리
if cnt> 1:
res += str(cnt)
res += cur
answer = min(answer, len(res))
return answer
728x90
'코딩 테스트' 카테고리의 다른 글
[프로그래머스] 타겟넘버 (Python) (0) | 2021.03.23 |
---|---|
[프로그래머스] 가장 큰 정사각형 찾기 (Python) (0) | 2021.03.23 |
[기타] 시간 복잡도 / 예외처리 (0) | 2021.03.20 |
[프로그래머스] 이진 변환 반복하기 (Python) (0) | 2021.03.18 |
[프로그래머스] 메뉴 리뉴얼 (Python) (0) | 2021.03.18 |
댓글