어떤 문자열 x의 "아름다움"을 다음과 같이 정의합니다.
0
입니다.i
, j
를 골랐을 때의 j-i
값들 중 최대값입니다.예를 들어, 문자열 "abbca"의 아름다움은 3입니다. 인덱스 1(b)
과 4(a)
를 고르거나, 또는 0(a)
과 3(c)
를 고를 때 최대값이기 때문입니다.
영어 소문자로 이루어진 문자열 s가 매개변수로 주어집니다. s의 모든 부분문자열의 아름다움의 합을 return 하도록 solution 함수를 완성해주세요.
"""
문자열의 아름다움
<https://programmers.co.kr/learn/courses/30/lessons/68938>
"""
def find(word):
length = len(word)
if length == 1: # one letter
return 0
else:
basic = word[0] # check if all letters are the same
i = 0
while i < length:
if basic != word[i]:
break
if i == length - 1:
return 0
i += 1
if word[0] == word[-1]: # find the most further 2 letters
i = 1
while True:
if word[i] != word[-1]:
return (length - 1) - i
i += 1
else:
return length - 1
def solution(s):
answer = 0
i = 0
while i < len(s):
j = i + 1
while j <= len(s):
answer += find(s[i:j])
j += 1
i += 1
return answer
print(solution("baby"))