Algorithm) Codekata_Day 5

1557 단어 algorithmalgorithm

❓ Question

어떤 문자들이 담긴 배열이 들어왔을 때,
공통적으로 시작되는 단어들을 추출하기

📝 My Solution

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('')
}

▪️ Solution review

공통되는 앞글자를 비교하기 위해서 배열에서의 첫번째 글자를 지정해주고
해당 글자를 뒤에 있는 글자들과 하나씩 비교해 준뒤
맞지 않는 글자가 있을 때, 반복문을 중지하고 지금까지 저장된 글자를
다시 firstStr에 넣어줘서 계속 비교해주게 했다.

이렇게 하면 글자는 나오긴 하는데 이상하게
join이라는 function이 없다는 오류가 나와서 몇개가 맞지 않았다.


📝 Another Solution

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)
}

▪️ Solution review

배열의 첫번째 글자를 비교 글자로 넣어주고,
그 글자와 뒤의 글자들을 indexOf()를 통해 비교를 하고,
-1 이 나온다면 글자를 하나씩 뒤에서 줄여나가
이 과정을 반복하는 형태로 코드가 짜져있다.
그렇게 0이 나오게 된다면 prefix를 내보내는 형태다.

이렇게 다른 글자들과 비교해서 최종으로 남은 글자를 내보내는 방식으로
문제를 풀면 되겠다.

좋은 웹페이지 즐겨찾기