TIL039 JavaScript: 중간평가

Somi·2021년 6월 18일
0

JavaScript

목록 보기
25/27
post-thumbnail

🙈오늘은 중간평가의 날!

위코드 2주차를 마무리하는 의미에서 JS 중간평가가 있었다. 생각보다 간단했던 시험이었지만, 동기들과 코드리뷰를 해보니 논리가 각자 달라서 비교해볼겸 블로깅을 해본다!

1. 짝수 판별 문제

✔️ 짝수인지 판별하는 함수 isEven을 작성 주세요.

console.log(isEven(11)) // --> "짝수가 아닙니다."
console.log(isEven(10)) // --> "짝수 입니다."

✔️ 나의 답변

function isEven(num) {
  if(num % 2 == 0){
    return "짝수 입니다."
  } else{
    return "짝수가 아닙니다."
  }
}

해당 문제는 그저 워밍업,,

2. 세금 팁 계산 문제

✔️ calculateTotal 함수를 작성하세요.

팁과 세금을 제외한 식사값이 주어졌을때, 
calculateTotal 함수는 팁과 세금이 포함된 총 식사값을 반환합니다.

Notes:

세금은 9.5% 팁은 15% 로 계산하세요.
팁을 계산할때 세금을 포함하여 계산하지 마세요.
console.log(calculateTotal(20)); // --> 24.9

✔️ 나의 답변

function calculateTotal(amount) {
  return amount * ( 1+ 0.095 + 0.15)
}

내 동기들 중엔 변수를 선언해서 식을 완성한 경우도 있었다.
나는 그냥 귀찮아서 간단하게 만들었당,,;;;

3. 문자열 반환 문제

✔️ 문자열이 주어졌을때, -를 기준으로 앞에 있는 문자열을 반환하세요.

console.log(getPrefix('BTC-KRW')) // --> BTC

✔️ 나의 답변

function getPrefix(str) {
  const string = str.split("-");
  return string[0]
}

해당 문제는 특정 문자를 기준으로 문자열을 잘라 배열로 반환 후, 첫번째 요소를 리턴하는 문제이다.
split 메서드로 간단하게 해결할 수 있었다.

4. 문자열의 위치 인덱스 반환 문제

✔️ getFind 함수를 작성하세요.

문자와 문자열이 주어졌을때, getFind 함수는 주어진 문자열에서 
주어진 문자가 나타나는 첫번째 위치를 반환합니다.

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

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

const output = getFind('a', 'I am a hacker')
console.log(output) // --> 2

✔️ 나의 답변

function getFind(filter, sentence) { 
  return result = sentence.search(filter);
}

구글링으로 찾은 search메서드! 동기들한테 알려주자 모두 배신감을 느껴했다고 한다...(나 포함;;)
그런데 이 문제는 for문으로도 풀 수 있다(이 방법이 아마 출제의도와 더 상관이 있을 것 같다.)

✔️ for 문을 활용한 답변

function getFind(filter, sentence) { 
  // 아래 코드를 작성해주세요.
  let stringtoArray = sentence.split('');
  
  for (i=0; i<stringtoArray.length; i++) {
    if( stringtoArray[i] === filter) {
      return i
    }
  }
  
  if (stringtoArray[i] !== filter) {
    return -1
  }
}

5. 가장 긴 문자열 찾기 문제

✔️ find_longest_word 함수를 만들어 주세요.

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

console.log(find_longest_word(["PHP", "Exercises", "Backend"])) 
// --> "Exercises"

✔️ 나의 답변

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

임시의 문자열길이를 변수에 담아준다는 아이디어만 있다면 쉽게 풀 수 있는 문제이다!
이전에 레플릿에서 풀었던 문제와 유사해서 쉽게 풀 수 있었다.
...는데 지수님이 오류를 발견해주셨다. 리턴문이 for문 안에 있어서 for문을 돌다가 배열의 이전 요소보다 다음 요소가 길이가 더 길면 바로 길이가 더 긴 요소를 리턴하는 것! 게다가 변수를 선언할때 length를 줘버리면 심각한 오류가 생긴다. 따라서 아래와 같이 return문은 for문 밖으로 빼고, length는 빼버리는 게 맞다.
바로 아래와 같이!

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

🙈 느낀 점

이제껏 훈련해온 강도가 저세상이어서 그런지 이번 시험은 비교적 쉽게 풀 수 있었다.
그래도 동기들과 답변을 비교하며 공부하니 경각심도 들고 내 위치와 논리구조를 파악할 수 있는 좋은 기회였다! 재밌었다😎😎

0개의 댓글

관련 채용 정보