[Python] (문제풀이) 가장 긴 공통의 접두사 구하기 (Code Kata 1-5)

이태권 (Taekwon Lee)·2022년 6월 10일
0
post-thumbnail

"마릴린 먼로 초상들" (앤디 워홀, 1964~)


가장 긴 공통의 접두사 구하기

❓ 문제

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

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

🤔 접근 방식

  • 이 문제도 결국 스스로 갈피를 잡을 수 없어서 열심히 찾았다.
  • 정말 많은 답이 나왔지만, 대부분은 내가 이해하기 어려운 수준의 답이었다.
  • 찾은 해결책 중 가장 직관적인 답을 구하여 이를 분석해 보았다.
  • 위의 링크에 일러스트레이션도 있으니 꼭 들어가 보길 바란다.

❗️ 답안

팀 답안

  1. sort()를 활용하여 해당 리스트를 알파벳 순서로 정렬시킨다.
  2. 빈 문자열 result를 선언한다.
  3. for 문으로 정렬한 리스트의 처음과 끝 요소의 공통된 단어를 찾는다.
  4. 공통된 단어가 있으면 result에 넣는다.
  5. 단어가 겹치지 않으면 곧바로 break를 걸어 반복문에서 나온다
  6. result를 반환한다.
  7. 리스트가 빈 경우와, 리스트의 요소가 하나일 경우에 대한 예외 조건을 맨 위에 넣는다.
def get_prefix(strs):
  if not strs:
    return ''
  elif len(strs) == 1:
    return strs[0]
  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

다른 답안

스택오버플로우에서 찾은 답안인데,
os.path.commonprefix를 활용하여 바로 풀 수 있다..?
이걸 쓰면 너무 얌체 같아서 이런 게 있구나 정도만 알면 되지 않을까 한다.

import os.path as p

def get_prefix(strs):     
  return p.commonprefix(strs)

🔖 참고 자료

profile
(Backend Dev.) One step at a time

0개의 댓글