출처 : https://programmers.co.kr/learn/courses/30/lessons/60057
새로 알게 된 것
>>> s = "interesting"
>>> y = s[ : 1000]
>>> print(y)
"interesting"
|
cs |
y = s[:1000] 처럼 문자열 슬라이싱 할 때 인덱스 에러가 일어날 것이라고 생각했었는데 그렇지 않았다.
Code
*주의 : 문자열(s)의 길이가 1인 경우를 간과했었는데, 아마 테스트 케이스 5번의 경우에 해당하는 것 같다.
문자열의 길이가 1인 경우, 바로 return 1을 하도록 변경해주었더니 통과했다.
def solution(s):
n = len(s)//2
minv = float('inf')
# 문자열 s의 길이가 1인 경우 따로 예외 처리
if len(s) == 1: return 1
for i in range(1, n+1):
# 문자열을 i단위로 잘라서 리스트에 추가시키기 (+ 반복 횟수도)
alist = []
blist = []
for j in range(0, len(s), i):
# alist가 빈 리스트가 아니라면
if alist:
if s[j:j+i] == alist[-1]:
blist[-1] += 1
else:
alist.append(s[j:j+i])
blist.append(1)
# 빈 리스트라면(처음에 한번)
else:
alist.append(s[j:j+i])
blist.append(1)
# alist와 blist를 합쳐서 문자열 길이를 알아보고 최소값을 업데이트한다.
temp = sum(map(len, alist)) + sum(map(lambda y: len(str(y)), filter(lambda x: x>1, blist)))
minv = min(minv, temp)
return minv
|
cs |
'알고리즘 > [Python] 프로그래머스' 카테고리의 다른 글
[Python/프로그래머스/2020 KAKAO BLIND RECRUITMENT] 괄호 변환 (0) | 2020.05.10 |
---|---|
[Python/프로그래머스/2019 카카오 개발자 겨울 인턴십] 튜플 (0) | 2020.05.08 |
[Python/프로그래머스/2019 카카오 개발자 겨울 인턴십] 크레인 인형뽑기 게임 (0) | 2020.05.07 |
(Python) [2019카카오공채] 후보키 (0) | 2020.03.06 |
(Python) [2020카카오공채] 외벽 점검 (0) | 2020.01.22 |