[Algorithm] #1. 1주차 3번

김상웅·2022년 6월 9일
0

[알고리즘]

목록 보기
3/18

📌 문제


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} 활용 등 다양한 방법이 있을 것입니다.

파이썬의 다양한 내장함수도 많이 활용해보고,
인자로 받는 데이터를 반복문, 조건문을 통해 처리하는 방법도 연습해봐야 할 것 같습니다.

profile
누구나 이해할 수 있도록

0개의 댓글