Q. String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.
예를 들어,
str = "abcabcabc"
return 은 3
=> 'abc' 가 제일 길기 때문`
str = "aaaaa"
return 은 1
=> 'a' 가 제일 길기 때문
for
을 사용해서 str의 첫번째 문자부터 마지막 문자까지 호출if
를 사용해서 중복된 문자가 등장하면 그때까지 호출된 문자를 저장len
함수를 사용해 얻고, max
함수를 사용해 최대값 반환def get_len_of_str(s) :
word = s[0]
result = []
for x in range(1,len(s)) :
if s[x] not in word :
word += s[x]
else:
result.append(word)
word = s[x]
result.append(word)
return max([len(x) for x in result])
def get_len_of_str(s) :
if s :
word = s[0]
result = []
for x in range(1,len(s)) :
if s[x] not in word :
word += s[x]
else:
result.append(word)
word = s[x]
result.append(word)
return max([len(x) for x in result])
else :
return 0
s가 빈 문자열일 경우 인덱스 에러가 발생
s값이 존재할 때 (True
일 때 ) 다음 과정이 진행될 수 있도록
s값이 없을 때(False
일 때 ) 0
을 반환하도록 수정
처음엔 딕셔너리를 이용해서 { 단어 : 단어의 길이 } 의 형식으로 저장한 뒤에 단어의 길이의 최대값을 구할까 생각했다. 하지마 딕셔너리의 value
값 간의 비교는 어차피 리스트의 형태로 가공한 뒤 max
함수를 사용하기 때문에 처음부터 리스트 형태로 길이값을 저장하는게 효율적이다.
간단한 for
문의 작성은 list comprehension 을 사용해 간결하게 적는다.