Algorithm | Code Kata #5

Wook·2021년 12월 4일
0

Algorithm | Code Kata

목록 보기
5/21

복수의 단어가 들어가있는 배열에서 그 각각의 element에 중복되는 단어를 반환하는 문제다. 첫번째 index의 단어를 기준으로 두번째와 세번째 단어에 indexOf 메소드를 적용하면 접근이 용이할 것 같아 그런 식으로 접근을 해보았으며, 이후 첫 단어를 slice해주는 식으로 풀이를 해보았다.


📲 My Code

const getPrefix = strs => {

  if (strs.length === 0) { // strs이 빈 배열일 경우
    return '';
  }
  
  let prefix = strs[0]; //기준이 되는 첫번째 원소

  for (let i=1; i<strs.length; i++){
    while(strs[i].indexOf(prefix)!==0){ // 두번째 원소부터 그 원소가 prefix를 포함하지 않을 동안
      prefix=prefix.slice(0,prefix.length-1) // prefix를 끝에서 한글자씩 지워줌
    }
  }
  return prefix;
}

느낀 점

접근이 중요하다고 느꼈다. indexOf의 값이 0이라면 해당 단어가 현재 단어 안에 모두 포함되었다는걸 의미하고, indexOf의 값이 -1이라면 해당 단어가 현재 단어 안에 포함되지 않은걸 의미하기에, indexOf 값이 0,-1 의 경우에 따라 조건을 나눠주었고, 그럴 경우 다음 단어로 넘어가 해당 prefix를 다시 비교해보며 최종 문자열을 반환할 수 있었다. indexOfslice (substring으로 대체 가능) 의 기능성과 장점을 확실히 느낄수 있는 문제였다.

profile
지속적으로 성장하고 발전하는 진취적인 태도를 가진 개발자의 삶을 추구합니다.

0개의 댓글