code_kata: 공통의 prefix 찾기

이지·2020년 12월 17일
0

const getPrefix = strs => {
  let n="";

  if(strs.legth===0) 
  {return n;} 
  
  for(let i=0; i<strs[0].length;i++){
  if(strs[0][i]=== strs[1][i]){
    n+=strs[0][i]
       }
  console.log(n)
     }
  
  for(let k=2; k<strs.length; k++){    
    p="";
    for(let j=0; j<n.length; j++){   
      if(n[j]=== strs[k][j]){
        p+=n[j]
      }
    }
    console.log(p);
    n=p;
  } 
  return n;
}

getPrefix(['start', 'stair', 'step',"st","s"])

n의 값을 빈 스트링("") 으로 주고, 첫 번째와 두 번째 단어의 공통단어로 재 할당한 뒤,
3번째 값 부터는 n 과 비교하여 공통단어를 추려갔다. p 라는 새로운 변수에 n과 새 단어의 공통값을
담아주고, n에 재할당 한 뒤, p는 다시 빈 스트링으로 리셋해주었다. 두 번째 푸니까 훨씬 나은 풀이가 나왔다. 알고리즘은 따로 공부하지 않았는데, 어쩐지 computational thinking에 조금 더 가까워진 기분.

function getPrefix(strs) {
    if (strs.length === 0) return ''; 
    
    let prefix = strs[0];
    
    for (let i = 1; i < strs.length; i++) {
        while (strs[i].indexOf(prefix) === -1) {
            prefix = prefix.substring(0, prefix.length - 1);
            console.log(prefix)
        }
    }
    
    return prefix;
}

getPrefix(["start","stars", "s"])

한편, 모델 풀이는 이렇게 쏘 심플.. while 자주 안써봤는데, 꽤나 강력한 녀석인것같다..

profile
이지피지레몬스퀴지🍋

0개의 댓글