코드카타 05: getPrefix

김현수·2022년 4월 15일
0

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

예를 들어 strs = ['start', 'stair', 'step'] return은 'st'
strs = ['start', 'wework', 'today'] return은 ""

내가 푼 답

const getPrefix = strs => {
  if (!strs.length) {
    return ""
  }
  
  let prefix = "";

  const checkStartswith = (index) => {
    return strs.every((item) => item.startsWith(prefix + strs[0][index]))
  }
  
  for(let i = 0; i < strs[0].length; i++) {
    if(checkStartswith(i)) {
      prefix += strs[0][i]
    } else {
      return prefix;
    }
  }
  
  return prefix;
}

배열의 모든 요소를 하나씩 돌며 조건을 심사해야 하기에 every 메서드를 사용했고, startsWith 메서드는 구글링을 통해 알아냈다. 깃허브에는 if절의 조건으로 checkStartswith 함수의 return 문을 그대로 넣었는데, 블로그에 올리다가 조건이 너무 긴 것 같아 따로 체크하는 함수로 따로 빼보았다.

배열의 모든 요소가 지금까지의 prefix에 strs[0]의 다음 글자를 더한 글자로 시작한다면 prefix에 그 글자를 더하고, 시작하지 않는다면 현재까지 모은 prefix를 반환하는 로직이다.

0개의 댓글