JavaScript | Test review

이진웅·2021년 11월 26일
0

JavaScript

목록 보기
7/8
post-thumbnail

오늘은 JavaScript 시험이 있었는데, 내가 애먹거나 풀지못한 문제를 리뷰해보려고 한다

첫번째, 내가 애먹었던 문제

getFind 함수를 작성하세요.

문자와 문자열이 주어졌을때, getFind 함수는 주어진 문자열에서 주어진 문자가 나타나는 첫번째 위치를 반환합니다.
Notes: 문자열의 첫번째 문자는 인덱스 값 0 을 가집니다. 만약 문자열에 해당 문자가 여러번 나타나면, 첫번째로 나타나는 위치를 반환해야 합니다. 만약 문자가 문자열에 존재하지 않는다면, -1 을 반환해야 합니다.

<중요!! indexOf 함수를 사용하지 마세요>

indexOf 를 사용한다면 너무 쉽고 간단하게 풀었을 문제였지만, 쓰지 못해서 당황했던 문제였다
처음에 변수로 주어진 값은 문자열이라 split 프로퍼티를 이용해 string을 배열로 쪼개서 index값을 가져오려고 했다

let filter = "a"
let sentence = "I am a hacker"

function getFind(filter, sentence) { 
  // 아래 코드를 작성해주세요.
  let chopSentence = sentence.split("")
  console.log(chopSentence)
 

처음엔 일단 string값을 배열로 쪼개 index값을 얻기위해 split 으로 쪼개긴했지만 indexOf 를 쓰지않고 어떻게 index값을 가져올지 막막했었다. 그래서 일단 string을 배열로 쪼갠 index값을 얻기 위해 반복문으로 내가 원하는 값을 얻어야한다고 생각해 for문을 작성하였다. console.log(chopSentence) 로 콘솔에 출력해보니 stirng값이 배열로 글자단위로 쪼개지는 것을 확인하였다

function getFind(filter, sentence) { 
  let chopSentence = sentence.split("")
  let sum = 0
  for (let i=0; i<chopSentence.length; i++) {
    sum = sum + 1
    if (chopSentence[i] === filter) {
      return sum - 1
      break;
    } 
  }
  return -1
}

0부터 시작해서 순회하기 시작하는데 조건에 맞으면 loop에서 탈출하는 식을 작성했다
index값은 0부터 시작하지만, 내가 설계한 식은 1부터 시작하기에 결과 값을 출력하기 전에 -1을 해주었다

나의 풀이 방법이 옳은 방법인지는 확실하진 않지만, 나는 이렇게 풀었다
혹시라도 풀이가 틀렸다면 훗날 수정하도록 하겠다...

두번째, 내가 풀지 못한 문제

find_longest_word 함수를 만들어 주세요.
주어진 리스트안에 있는 단어 중 가장 긴 단어를 찾을수 있도록 함수를 완성해주세요.

let arr = ["PHP", "Exercises", "Backend"]

이 문제는 시간이 모자라 풀지 못했기도 했지만, 너무 복잡하게 생각 했던 탓에 풀지 못했던 것 같다

처음에는 배열 속 요소의 길이 값을 모두 구한 뒤 max값
즉, 가장 큰 길이값의 index를 출력하여 원하는 값을 출력하게끔 해야겠다고 생각했었다
생각은 그렇게 했지만 필요한 프로퍼티를 찾지는 못해 더 고민했고,
빈 배열을 생성해 for문으로 각 배열의 요소마다 비교해 더 큰 값을 빈 배열에 덮어 씌우는 방식으로 풀기로 했다

let arr = ["PHP", "Exercises", "Backend"]

function find_longest_word(arr) { 
  let longestWord = []
  for(let i = 0;  i < arr.length; i++){
    if(arr[i].length > longestWord.length){
      longestWord = arr[i]
    }
  }
  return longestWord
}

이렇게 각각의 배열을 비교해 더 큰 값을 빈 배열에 덮어씌우는 로직으로
배열을 순회하면서 매번 길이가 큰 값을 빈 배열에 넣을 수 있게 만들었다

소회

대체적으로 문제를 풀면서 배열 관련 문제를 어렵게 풀었던 것 같아 기본기를 더 다져야겠다고 생각한 하루였다 😢

0개의 댓글