code-taka 03(get_len_of_str)

Nicholas·2022년 5월 15일
0

Algorithm & DataStructure

목록 보기
3/12

문제

String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.

str: 텍스트
return: 중복되지 않은 알파벳 길이 (숫자 반환)

풀이

def get_len_of_str(s):
    if not s:
        return 0
    list_1 = []
    list_2 = []
    for i in s:
        if i not in l1:
            list_1.append(i)
        else:
            a = len(list_1)    
            list_2.append(a)
            list_1 = []
            list_1.append(i).  #주의점1
    list_2.append(len(list_1)) #주의점2    
    list_2.sort()    
    return l2[-1]

빈리스트 list_1과 list_2의 활용은 list_1은 중복 직전까지 s의 요소를 담는 용도, list_2는 list_1의 길이를 담는용도로 사용

중복이 발생하면 list_1의 길이를 len함수로 측정해서 그 값을 list_2에 넣고 list_1 초기화 진행

계속 반복 해서 list_2의 값을 sort 함수를 이용해 오름차순으로 정렬하고 인덱스 -1을 사용해서 그 값을 뽑아 return한다

주의점 1 : 주의점1의경우 중복된시점에 인자를 추가해주지않으면 중복된값이 리스트에 추가되지않아 빈리스트를 만들고 for문을 돌기전에 추가해줘야한다.

주의점2 : for문을 돌때 마지막인자는 반드시 중복되는것이 없으므로 if문에서 True쪽 구문을 통과한다 하지만 True문에는 길이를 측정해서 list_2에 담는 구문이 없으므로 if문이 끝나면 list_1에 마지막인자가 추가된 list_1의 길이를 측정하여 list_2에 넣어준 뒤에 전체 정렬을 해야 올바른 값이 나온다.

profile
WEB Developer

0개의 댓글