내 코드
def solution(s):
answer = len(s)
for i in range(1,(len(s)//2)+1):
list_s = s
a = []
k=0
for j in range((len(s)//i)+1):
a.append(list_s[:i])
list_s = list_s[i:]
stack = []
stack.append(a.pop(0))
while len(a)>0:
p = a.pop(0)
if stack[-1] == p:
k+=1
else:
if k>=1 : stack[-1] = str(k+1) + stack[-1]
stack.append(p)
k=0
if k>=1 : stack[-1] = str(k+1) + stack[-1]
answer = min(answer,len("".join(stack)))
return answer
ㅠㅠㅠ 완전 노가다ㅠㅠ 전부다 구해준 다음에 가장 짧은 문자열을 구하였다.
문자를 1개로 자를때 부터 len(s)//2+1까지 구해준다.
자른 리스트의 가장 앞 원소가 stack의 가장 마지막 원소와 같으면 k를 더해줘서 몇번 반복되었는지 찾는다.
다를경우에는 이때까지 저장해뒀던 k를 stack의 가장 마지막원소에 합쳐준다.
이렇게 for문으로 구해서 가장 짧은 문자열을 구했다.
'코딩테스트 > Python' 카테고리의 다른 글
[프로그래머스] 영어 끝말잇기 (0) | 2021.09.09 |
---|---|
[프로그래머스] 오픈채팅방 (0) | 2021.09.08 |
[프로그래머스] 짝지어 제거하기 (0) | 2021.09.08 |
[프로그래머스] 스킬트리 (0) | 2021.09.07 |
[프로그래머스] 124 나라의 숫자 (0) | 2021.09.07 |