[Algorithm] #1. 1주차 5번

김상웅·2022년 6월 12일
0

[알고리즘]

목록 보기
4/18

📌 문제


strs은 단어가 담긴 배열입니다.

공통된 시작 단어(prefix)를 반환하는 프로그램을 작성해주세요

예를 들어,

strs = ['start', 'stair', 'step']
return 값은 'st'

 

strs = ['start', 'wework', 'today']
return 값은 ''


✅ 풀이


문제 이해는 했지만, 코드로 구현하는 것이 힘들었습니다.

부트캠프의 동기 수강생 분들의 코드와 그 코드를 참고하여 제가 작성해본 코드입니다.

리스트로 이루어진 strs 원소의 각 문자열을 순회하면서 같은 문자열이 반복되는 만큼 출력을 해야합니다.

만약 원소마다 같은 문자열이 없거나 빈리스트인 경우 공백("")을 반환해야 합니다.

풀이 코드로 이해해보겠습니다.

1 def answer(strs):
2   
3 	result = "" # 결과값
4 	strs.sort() # 리스트 내림차순 정렬
5
6 	if not strs : # 빈배열 혹은 다른 값에 대한 처리
7		return result
8   elif len(strs) == 1 : # 배열 내 하나의 문자열 처리
9   	return strs[0]
10  else :
11  	for i in range(len(strs[0])): # 배열 + 한 개 이상의 문자열 처리
12      	if strs[0][i] == strs[-1][i] :
13        		result += strs[0][i]
14      	else:
15        		break
16    	return result

우선 반환해야하는 결과값인 result인 변수에 최초로 공백("")을 설정하여 줍니다.

📌 sort()


리스트 내의 문자열의 중복되는 철자를 비교할 때 sort() 함수를 통해 정렬을 한 후 문제를 풀면 더욱 수월하게 풀 수 있습니다.

아래의 리스트를 sort()로 정렬하면:

list = ["abc", "aabc", "aaabc"]
list.sort()

다음과 같습니다:

//reuslt :: [""aaabc", "aabc", "abc"]

1) sort()함수로 리스트 내의 문자열을 내림차순으로 정렬을 한 뒤,

2) 첫번째 문자열과 마지막 문자열의 중복되는 철자를 찾아내줍니다.

profile
누구나 이해할 수 있도록

0개의 댓글