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()
로 정렬하면:
list = ["abc", "aabc", "aaabc"]
list.sort()
다음과 같습니다:
//reuslt :: [""aaabc", "aabc", "abc"]
1) sort()
함수로 리스트 내의 문자열을 내림차순으로 정렬을 한 뒤,
2) 첫번째 문자열과 마지막 문자열의 중복되는 철자를 찾아내줍니다.