728x90
반응형
문제:
풀이방법:
처음에는 스택으로 구축할까 생각하다가 많이 복잡할 것 같아서 슬라이싱을 활용한 문자열 비교로 해결하기로 하였다.
문자열의 길이가 1이면 항상 답은 1이라는 예외처리로 시작한다. 몇 개 단위로 자르는 것이 가장 짧은 방법인지 알지 못하므로 1부터 len(s)까지 분할 하도록 한다. i개의 단어로 자르면서 앞과 현재가 같다면 count를 하나올려주도록 한다. 만약 다르다면 count를 비교해보도록 한다. count가 1이라면 그냥 문자열에 더하고, 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
|
def solution(s):
answers=[]
if len(s)==1:
return 1
for i in range(1,len(s)):
answer = ''
count = 1
for j in range(i,len(s),i):
if s[j-i:j]==s[j:j+i]:
count+=1
else:
if count==1:
answer+=s[j-i:j]
else:
answer+=str(count)+s[j-i:j]
count=1
if len(s[j:j+i])==i:
if count==1:
answer+=s[j-i:j]
else:
answer+=str(count)+s[j-i:j]
count=1
else:
answer+=s[j:j+i]
answers.append(len(answer))
return min(answers)
|
cs |
문제링크:
https://programmers.co.kr/learn/courses/30/lessons/60057
728x90
반응형
'Algorithm > Python' 카테고리의 다른 글
[Programmers]2018 Kakao.방금그곡 (0) | 2019.12.01 |
---|---|
[Programmers]2020 Kakao.괄호 변환 (0) | 2019.11.15 |
[BOJ]2358. 평행선 (0) | 2019.11.13 |
[BOJ]GIT- 정리 (0) | 2019.11.12 |
[BOJ]1937. 욕심쟁이 판다 (0) | 2019.11.11 |