[CodeKata] def get_prefix(strs):
문제
strs은 단어가 담긴 배열입니다.
공통된 시작 단어(prefix)를 반환해주세요.
예를 들어strs = ['start', 'stair', 'step'] return은 'st' strs = ['start', 'wework', 'today'] return은 ''
풀이
def get_prefix(strs):
if len(strs) == 0:
return ''
strs.sort()
result = ''
for i in range(len(strs[0])):
if strs[0][i] == strs[-1][i]:
result += strs[0][i]
else:
break
return result
str을 sort로 정렬시키면 알파벳 순으로 정렬이 된다
이를 이용해서 str로 이루어진 list를 정렬시키면 공통된 시작 단어를 쉽게 구할 수 있음을 알 수 있다
먼저 에러를 방지하기 위해 리스트가 비었을 경우 ''를 반환해주는 조건을 만들었다
1. input된 리스트를 sort시키고 빈 str 값을 갖는 result 변수를 정의했다
2. for문을 통해 첫 단어의 길이만큼 반복시킨다
3. 첫 단어, 마지막 단어를 비교해 각 단어의 위치하는 값이 같다면 result에 추가하고 아닐 경우 break한다
다른 풀이
sort를 쓰지 않고 푸는 방법은 무엇이 있을까 고민하다가 이중 for문으로도 해결하였다
def get_prefix(strs):
if len(strs) == 0:
return ''
if max(strs) == min(strs):
return strs[0]
for i in range(len(strs[0])):
for str in strs:
if str[i] == strs[0][i]:
continue
else:
return strs[-1][:i]
이중 for문의 외부는 첫 번째 단어의 길이, 내부는 list의 각 단어로 반복문을 실행한다
각 단어의 위치에 같은 문자가 있으면 반복문을 계속 실행한다
다른 단어가 확인되면 list의 마지막 단어에서 i 전 까지 slicing해서 return해준다
이 때 list가 비었을 경우, list의 단어들이 모두 같은 경우는 따로 빼서 return해준다
Author And Source
이 문제에 관하여([CodeKata] def get_prefix(strs):), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gyuls/CodeKata-def-getprefixstrs저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)