📍문제
String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.
str: 텍스트
return: 중복되지 않은 알파벳 길이 (숫자 반환)
input | result | |
---|---|---|
"abcabcabc" | 3 | 'abc' 가 제일 길기 때문 |
"aaaaa" | 1 | 'a' 가 제일 길기 때문 |
"sttrg" | 3 | 'trg' 가 제일 길기 때문 |
def get_len_of_str(s):
a,b=[],[]
'''
리스트 a : 중복되는 문자열을 만나기 전까지 넣어둘 곳
리스트 b : 중복을 만나면 옮겨놓을 곳
'''
for i in s:
if i in a: #리스트 a 안에 문자열 i가 있다면 (중복된다면)
b.append(a) #지금까지 모아놓은 문자열을 리스트b에 넣고
a=[] #a 리셋
a.append(i) #리셋한 리스트 a에 i 입력
b.append(a) #for문에서 나오지 못했을 마지막 리스트 a 추가
return len(max(b,key=len)) #문자열 길이를 기준으로 b에서 제일 긴 문자열의 길이를 반환
def get_len_of_str(s):
str = []
l = 0
for i in s:
if i not in str: #리스트str 안에 i가 없으면
str.append(i) #리스트str 에 i 추가
else: #리스트str 안에 i가 있으면
str = [i] #리스트srt 모두 리셋 + i만 추가
l = max(l,len(str))
'''
첫번째 for문 : max(0,len(str)) -> l=len(str)
두번째 for문 : max(l ,len(str))-> 길이가 더 긴 값을 l에 저장하여 다음 for문의 len(str)과 비교하여 l 에 저장
.
.
.
'''
return l #for문으로 len(str)비교하였을때 최종적으로 저장된 값이 가장 긴 문자열이 l에 저장되어있음