get_len_of_str 함수는 인자로 문자열을 받습니다.
문자열 중 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.
다음 예시를 보면, s를 인자고 받고 return 값을 반환합니다.
str = "abcabcabc"
return 은 3
=> 'abc' 가 제일 길기 때문
str = "aaaaa"
return 은 1
=> 'a' 가 제일 길기 때문
str = "sttrg"
return 은 3
=> 'trg' 가 제일 길기 때문
처음 문제를 분석했을 때 중복되는 값의 index를 얻어 슬라이싱을 통한 풀이 방법을 생각하였습니다.
하지만 index 값에 접근하여 슬라이싱하는 것이 어려웠고, 검색과 주변의 도움을 얻어 다음과 같은 풀이 방식으로 해결할 수 있었습니다.
1 def get_len_of_str(s):
2 new_str = []
3 count = 0
4
5 for i in s:
6 if i not in new_str:
7 new_str.append(i)
8 else:
9 count = max(len(new_str), count)
10 new_str = [i]
11
12 result = max(len(new_str), count)
13 return result
14
2
문자열의 알파벳을 중복없이 저장하는 빈 List를 선언합니다.
3
문자열의 길이와 비교하여 최댓값을 저장하는 변수를 선언합니다.
5
for loop를 통해 문자열의 알파벳을 순회합니다.
6, 8
문자열의 중복을 체크합니다.
9
중복이 없는 문자열의 최댓값을 count 변수에 저장합니다.
10
중복되는 알파벳을 만나면 중복을 체크하는 리스트는 초기화횝니다.
11
for loop 순회가 종료되면 저장된 count와 중복을 체크하는 리스트의 크기를 비교합니다.
max(a, b)
a, b 중 큰 수를 반환하는 함수입니다.
pop() / append() 함수 활용
dictionary {alphabet: index} 활용 등 다양한 방법이 있을 것입니다.
파이썬의 다양한 내장함수도 많이 활용해보고,
인자로 받는 데이터를 반복문, 조건문을 통해 처리하는 방법도 연습해봐야 할 것 같습니다.