Python: Code Taka 1주차 5

dev-swd·2020년 11월 15일
1

Code Taka

목록 보기
5/12

Q. strs은 단어가 담긴 배열입니다. 공통된 시작 단어(prefix)를 반환해주세요.

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

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

나의 답

1시간 걸려서 풀지 못했다.
문자열 리스트에서 가장 길이가 작은 값 만큼만 반복하여 체크하는 방향까진 좋았지만, 그 후 로직에서 답의 실마리를 찾지 못하였다.


솔루션

def get_prefix(strs):
    if not len(strs):
        return '' 
        
    res = ''
    strs = sorted(strs)
    
    for i in strs[0]:
        if strs[-1].startswith(res+i):
            res += i
        else:
            break

    return res
  1. 문자열 리스트가 비어있을 때 빈 문자를 리턴한다.
  2. prefix 문자열이 저장될 res 변수를 만든다.
  3. 문자열을 값 기준으로 정렬한다. (*이게 핵심, 문자열 순으로 정렬하기 때문에 공통되는 문자열을 찾을 때, 문자열 리스트의 첫번째와 마지막 값만 비교하면 된다.)
  4. 반복문을 돌리되, 문자열의 첫번째 값 만큼 돌린다. (가장 마지막 값으로 해도 무방하다. 값을 기준으로 정렬한 시점에서 문자열 길이는 알지 못하기 때문에)
  5. 정렬한 문자열 배열의 첫번 째 값의 첫번째 문자와, 정렬한 문자열 배열의 마지막 값의 첫번 째 문자와 비교해나가면서, 일치한다면 prefix 변수에 담는다. 일치하지 않는다면 그 시점에서 반복문을 종료한다.
profile
개발을 취미로 할 수 있는 그 때 까지

0개의 댓글