728x90
https://programmers.co.kr/learn/courses/30/lessons/60057
새롭게 알게된것 :
문자열에서 범위를 넘어서는 슬라이싱을 해도 에러가 안난다. 그저 있는 만큼 잘 잘릴 뿐
for문이 len(s)+i까지인 이유는
끝까지 압축이 가능할 경우 b에 추가가 안되고 cnt만 올라가기 때문에
+i를 해주어 현재 있는 cnt와 tmp를 b에 추가하기 위해서이다.
코드 :
def solution(s):
result=[]
# 한글자 일때는 한글자를 반환
if len(s)==1:
return 1
# 1글자부터 총길이까지 압축길이가 될 수 있다.
for i in range(1, len(s)+1):
b = ''
cnt = 1
tmp=s[:i]
for j in range(i, len(s)+i, i):
# 압축 가능
if tmp==s[j:i+j]:
cnt+=1
# 압축 불가능
else:
# 압축을 해봤음
if cnt!=1:
b = b + str(cnt)+tmp
# 압축을 안해봤음
else:
b = b + tmp
# 다시 압축 문자열 재설정
tmp=s[j:j+i]
cnt = 1
result.append(len(b))
return min(result)
사실 왜 +i가 되는지 이해가 안가서 물어봤다.
감사합니다!!
참고 블로그 :
https://ljhyunstory.tistory.com/18
복습 :
✅ 20220630
🐾 20221013
반응형
'알고리즘 > 프로그래머스문제풀이' 카테고리의 다른 글
[Python/프로그래머스] 숫자 문자열과 영단어 (Level 1) (0) | 2022.06.29 |
---|---|
[Python/프로그래머스]오픈채팅방 (0) | 2022.06.28 |
[Python/프로그래머스]신규아이디추천_구현 (0) | 2022.06.28 |
[Python/프로그래머스]신고 결과 받기 (0) | 2022.06.28 |
[Python/프로그래머스]순위_그래프 (0) | 2022.06.19 |