[Code Kata] Day 5. 공통 단어 반환하기

Pulan·2022년 8월 6일
0

알고리즘

목록 보기
3/3
post-thumbnail

strs은 단어가 담긴 배열입니다. 공통된 시작 단어(prefix)를 반환해주세요.
예를 들어 strs = ['start', 'stair', 'step'] return은 'st'
strs = ['start', 'wework', 'today'] return은 ''

접근 방법

  1. 공통된 단어들을 넣은 변수를 만든다.
    -> result = ''
  2. 인자 값의 첫번째 단어를 기준으로 세운다.
    -> 나머지 값에서 기준에 있는 단어가 없으면 그냥 빈 값을 보낸다.
  3. every 메서드를 이용해서 각 요소이 내가 정의한 조건에 모두 맞는지 확인한다.
    -> every는 배열의 메서드이기 때문에 기준으로 세운 단어를 배열로 만들어준다.
strs[0].split('').every(item => {});
  1. strs를 filter 메서드를 이용해서 각 요소들이 item이 포함되있는지 확인하고, 포함되어 있으면 요소의 길이와 strs의 길이가 같은지 확인한다.
    -> 같으면 true, 아니면 false
  2. (4)에서 반환된 true/false 값을 보기 좋게 isWord라는 변수에 넣어준다.
    -> 변수 명은 딱히 상관 없음
const isWord =
      strs.filter(word => word.includes(item)).length === strs.length;
  1. isWord가 true면 result에 item을 추가해주고 계속 every가 돌아갈 수 있도록 true값을 반환해준다.
if (isWord) {
      result += item;
      return true;
    }
  1. TypeError 처리하기
    -> 테스트를 돌리면 타입 에러가 발생하게 되는데 아마 빈 값을 받게되는 상황인거 같다.
    -> 그냥 빈 값인지 확인만 하면 된다.
if (strs.length === 0) {
    return '';
  }

전체 코드

const getPrefix = strs => {
  if (strs.length === 0) {
    return '';
  }
  let result = '';
  strs[0].split('').every(item => {
    const isWord =
      strs.filter(word => word.includes(item)).length === strs.length;
    if (isWord) {
      result += item;
      return true;
    }
  });
  return result;
};

참고문서

profile
현재 개발 중인 블로그로 내용들을 개선하면서 업데이트하고 있습니다. https://www.plu457.life/

0개의 댓글