String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.
str: 텍스트
return: 중복되지 않은 알파벳 길이 (숫자 반환)
예를 들어,
str = "abcabcabc"
return은 3
=> 'abc' 가 제일 길기 때문
str = "aaaaa"
return은 1
=> 'a' 가 제일 길기 때문
str = "sttrg"
return은 3
=> 'trg' 가 제일 길기 때문
문제의 중점 파악
- 처음 중복되는 지점 찾기
- 지점별로 단어 구별하기
- 가장 긴단어의 길이 구하기
이 세가지에 대한 해결 방식으로
- looping을 이용하여 문자를 하나씩 추가하여 현재까지 추가된 단어 중에 문자가 존재하는지 확인
- 문자가 중복 되지 않는다면 단어에 추가 > 단어가에 중복 문자가 존재하면 현재까지 저장된 단어 컷, 리스트에 append > 다음 문자부터 다시 srtring 추가
- max함수에 key값을 len으로 두어 가장 긴 단어 길이 추출 return
def get_len_of_str(s):
lst = []
word = ''
#looping
for i in s:
#중복되는 단어 없으면 sting에 저장
if i not in word:
word= word+i
#중복 되는 문자 존재시 현재까지 저장한 스트링을 저장, list에 append
elif i in word:
lst.append(word)
word=''
word = word+i
#중복값 없는 마지막으로 남은 str을 append
lst.append(word)
#lst에서 가장 긴 단어 찾기
longest = max(lst,key=len)
return len(a)
이번 문제는 일단 longest를 구하는 맥스 함수에 대한 이해가 부족했다.
key값으로 여러가지 조건을 이용한 max 함수 응용이 가능하다는 것을 모르고 있었다.
max(값,key=func)
파이썬은 사람이 사용하기 편한 언어인 만큼 다양한 내장 함수와 그 한수들의 응용버전이 가능하다. 항상 사용하는 함수들에 대한 새로운 기능을 찾을 노력이 항상필요하다고 생각한다. 보다 간결하면서도 powerful한 로직을 구현 할수가 있기 때문이다. 이를 위해 공식문서나 기타 개발자들의 조언이 담긴 문서들을 찾아보고 계속 업데이트할 필요가 있는 것 같다.