[알고리즘] 공통된 시작 단어 반환(sorted, startswith)

hamingu·2021년 4월 30일
0

알고리즘

목록 보기
1/6

🔎 해당 문제에 필요한 함수

  • sorted
  • startswith
  • 문제 : 단어가 담긴 배열에서 공통된 시작 단어 반환하기

    예를들어 strs = ["apple", "apache", "api"] 일 경우 3개의 단어에서 공통된 시작 단어인
    "ap"를 반환해주는 문제이다.

    내 코드

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

    어떻게 풀었나요?

    먼저 sorted, startswith 함수에 대해 알아보자.

    sorted

    sort는 요소들을 정렬해주는 파이썬 내장 함수로서 sorted 함수는 기능은 똑같지만 sort는 그저 요소를 정렬해주기만 할 뿐이며 sorted는 정렬한 요소를 반환해주고 새로운 객체에 할당할 수 있다.

    startswith

    startswith() 함수는 대상 문자열이 특정 문자 또는 문자열로 시작하는지 체크하는 함수이다

    예를들어 "apple".startswith("ap")를 하면 "aplle"이 괄호안의 "ap"로 시작하는게 맞는지를 체크하며 맞으면 True 틀리면 False를 반환한다.

    풀이 요약(자세하게 기술하진 않았음)

    1) 먼저 단어들을 가진 리스트를 sorted 함수로 정렬해준다.

    2) 겹치는 단어를 저장할 빈 문자열을 result 변수에 담아준다.

    3) 리스트의 [0]번째 요소를 for문으로 돌려 리스트의 [-1]요소의 시작단어와 일치하는지 비교한다.

    4) 일치한다면 result에 일치하는 글자를 더해준다.

    5) 어디까지 일치하는지 계속 체크해야하기 때문에 startswith 함수의 괄호안에 result + i로 계속 result값을 이어나간다.

    6) 일치하는 값이 나오지 않을 때 break로 for문을 중단한다.

    위 요약을 본 후 코드를 해석하면 이해가 될 것이다.

    모르는 함수를 활용해야 하는 알고리즘 풀이는 참 사람을 힘들게한다. 만약 해당 함수를 알지 못한다면 for문을 3번 돌릴 생각을 했을 것 같다.. 발전해 나가겠지! 화이팅

    profile
    프로그래밍구

    0개의 댓글