어떤 문자들이 담긴 배열이 들어왔을 때,
공통적으로 시작되는 단어들을 추출하기
const getPrefix = strs => { let firstStr = strs[0]; const newArr = []; for (let i = 1; i<strs.length; i++) { for (let v = 0; v<strs[i].length; v++) { if (firstStr[v] === strs[i][v]) { newArr.push(strs[i][v]) } else { firstStr = newArr.splice(0,v); console.log(firstStr) break; } } } return firstStr.join('') }
공통되는 앞글자를 비교하기 위해서 배열에서의 첫번째 글자를 지정해주고
해당 글자를 뒤에 있는 글자들과 하나씩 비교해 준뒤
맞지 않는 글자가 있을 때, 반복문을 중지하고 지금까지 저장된 글자를
다시 firstStr
에 넣어줘서 계속 비교해주게 했다.
이렇게 하면 글자는 나오긴 하는데 이상하게
join이라는 function이 없다는 오류가 나와서 몇개가 맞지 않았다.
const getPrefix = (strs) => { let prefix = strs[0]; for(let i=1; i<strs.length; i++){ while(strs[i].indexOf(prefix) !== 0){ prefix = prefix.substring(0, prefix.length-1) } console.log(prefix); } return (prefix === undefined ? "" : prefix) }
배열의 첫번째 글자를 비교 글자로 넣어주고,
그 글자와 뒤의 글자들을 indexOf()
를 통해 비교를 하고,
-1 이 나온다면 글자를 하나씩 뒤에서 줄여나가
이 과정을 반복하는 형태로 코드가 짜져있다.
그렇게 0이 나오게 된다면 prefix를 내보내는 형태다.
이렇게 다른 글자들과 비교해서 최종으로 남은 글자를 내보내는 방식으로
문제를 풀면 되겠다.