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 자주 안써봤는데, 꽤나 강력한 녀석인것같다..