자바스크립트 코딩테스트 연습 6일차

Y·2020년 8월 3일
1

문제 1


내 풀이


function findMissingLetter(array){
  let missingLetter = ""
  const finding = array.reduce((acc,cur,idx)=>{
    if(idx>=1){
      
      if(acc.charCodeAt()===cur.charCodeAt()-1){
        return cur
      }else{
        missingLetter = String.fromCharCode(cur.charCodeAt()-1);
        return cur
      }
    }
  })
  return missingLetter
}

reduce 문으로 전요소와 현재요소를 쭉 비교해가면서 아스키코드가 없는 부분에서 missingLetter에 현재요소의 아스키코드 -1 의값을 가지는 문자를 저장했다.

추천 풀이


function findMissingLetter(array) {
  let first = array[0].charCodeAt(0)
  for (let i = 1; i < array.length; i++) {
    if (first + i !== array[i].charCodeAt(0)) {
      return String.fromCharCode(first + i)
    }
  }
  throw new Error("Invalid input")
}

방식은 비슷했다.

문제 2


내 풀이


function anagrams(word, words) {
  const sorting = word => word.split('').sort().join('');
  const sortedWord = sorting(word)
  
  return words.filter( w => sortedWord === sorting(w));
}

문자열을 정렬하고, 같은지 여부를 확인하는 코드다. 처음부터 맞게풀었는데 결과화면이 답이틀렸다는줄알고 30분넘게 고민한 내가 멍청했다. 어쩐지 아무리생각해도맞는데..

공부


처음에는 for문을 이용하여 리스트 각 요소마다 체크하게끔 반복문을 돌렸다. 틀린줄 알고 이것저것 알아보다가 filter()함수를 이용하면 더욱 쉽게 갈 수 있었다.
Array.prototype.filter()는 인자로 넘겨진 함수의 반환값을 true인 요소들로만 이루어진 배열을 만들어준다.

profile
연세대학교 산업공학과 웹개발 JavaScript

0개의 댓글