[CodeKata] #05, getPrefix 함수

April·2021년 4월 30일
0
post-thumbnail
post-custom-banner

문제

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

예를 들어

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

💡 풀이

  1. 인자가 없을 경우 early return 말 그대로 바로 빠져나오기
  2. 두 번째 for문에서 인자로 받은 배열의 첫 번째를 기준으로 잡기로 하고
  3. 기준이 된 요소두 번째 인자로 받은 요소를 비교하다가 다를 경우,
  4. 같을 때까지의 문자만 넣어서
    • 다를 경우 뒤에는 비교할 필요가 없기 때문에 새로운 기준이 될 문자를 담는 과정
  5. 인자로 받은 세번째와 비교.
    • 첫 번째와 두 번째에서 이미 한 번의 비교가 끝났으므로 세 번째에서도 동일하게 비교
  6. 첫 번째 for문을 통해 이 과정을 인자로 받은 배열의 수만큼 반복
  7. 최종적으로 남은 기준을 return

✅ 코드

const getPrefix = strs => {
  if(strs.length === 0) {
    return '';
  } 
  
  for (let i=1; i<strs.length; i++) {
    for (let j=0; j<strs[0].length; j++) {
        if (strs[0][j] !== strs[i][j]) {
          strs[0] = strs[0].substring(0,j);
        }      
    }
  }
  return strs[0]; 
}

const strs = ['start', 'stair', 'step']
console.log(getPrefix(strs));

🎈 What i learned

  • 처음 문제를 풀었을 때 if문에서 ===에 꽂혀 풀릴듯 말듯한 시간을 오래 지냈다
  • 생각을 바꿔 반대의 조건으로 !==을 다시 생각해보니 문제가 풀렸다
  • 예상보다 시간이 오래 걸렸던 문제..
  • 문제가 안 풀릴땐 생각을 바꿔보자! 틀에 갇히지 말자!
profile
🚀 내가 보려고 쓰는 기술블로그
post-custom-banner

0개의 댓글