[JavaScript] 위코드 JS 중간고사 정리


문제 01. isEven

  1. 나의 풀이
function isEven(num) {
  const result = num % 2;
  const message = (result === 0) ? "짝수 입니다." : "짝수가 아닙니다.";
  return message;
}
  1. Model Solution
const is_even = num => {
  if(num % 2 === 0){
    return "짝수 입니다"
  } else
    return "짝수가 아닙니다"
}
  1. 다른 풀이
const isEven = num => {
	return num % 2 ? "짝수 입니다" : "짝수가 아닙니다"';
}
  1. 놓친 점 & 질문
    1) arrow function : 함수 선언할 때, 화살표 함수로 선언 해보는 것
    2) 삼항연산자 true, false 똑똑하게 사용하기 : ===0 조건문을 굳이 안넣어도, truthy, falsy 개념을 활용하면 더 간단하게 코드를 짤 수 있다. (0, 1은 false, true)
    변수 ? true일 때 값 : false일 때 값 형식을 기억해서 종종 써먹어야겠다.
    3) message 변수를 선언했어야 했을까? : 내가 return 하는 데이터의 의미를 명확하게 하고 싶어서 따로 변수를 선언했는데, 현업에서는 이렇게 잘 안하는지 물어봐야겠다.

문제 02. calculateTotal

  1. 나의 풀이
function calculateTotal(amount) {
  const tip = amount * 0.15;
  const tax = amount * 0.095;
  amount += (tip + tax);
  return amount;
}
  1. Model Solution
const calculate_total = num => {
  return num + num * 0.095 + num * 0.15;
}
  1. 다른 풀이
function calculate_total (price) {
  let tax = price * 9.5 / 100;
  let tip = price * 15 / 100;
  return price + tax + tip;
}
  1. 놓친 점 & 질문
    1) 변수를 따로 선언하는 건 역시 별로인지? : 의미를 담고 싶어서 tip, tax 변수를 따로 선언했는데, num 하나로 다 해결하는게 나은지 궁금하다ㅠ
    2) return 문에 표현식 써보기 : 항상 단어 하나만 return 했는데, 표현식을 써도 좋을 것 같다. 변수를 따로 선언 안하고 표현식을 썼을 때 성능상 이점이 있는지 궁금하다.
    3) 비율 / 100 : amount에 직접 값을 곱해주는 방식을 사용했는데, 9.5 / 100 방식으로 해도 쓸모가 있을 것 같다. 예를 들어 9.5 부분을 변수로 선언하면, tax, tip 비율이 달라져도 편하게 사용할 수 있을 것 같다.
    ※ 참고 - 백분율
    수를 100과의 비로 나타내는 방법이다. 비율에 100을 곱한 값이며 기호는 %이다.
    let tax = 9.5;
    let tip = 15;
    return num + (num * tax / 100) + (num * tip / 100);

문제 03. getPrefix

  1. 나의 풀이
function getPrefix(str) {
  str = str.substr(0, str.indexOf('-'));
  return str;
}
  1. model solution
function get_prefix(word) {
  return word.split('-')[0];
}
  1. 다른 풀이
let get_prefix = string => {
  let hyphen = string.indexOf('-');
  return hyphen === -1 ? string : string.slice(0, hyphen);
}
  1. 놓친 점 & 질문

문제 04. getFind

  1. 나의 풀이
function getFind(filter, sentence) { 
  for (let i = 0; i < sentence.length; i++) {
    if (filter === sentence[i]) {
      	return i;
    } else {
 		continue;
    }
  }
  return -1;
}

  1. model solution
function get_find(filter, sentence) {
  for (let i = 0; i < sentence.length; i++) {
    if (sentence[i] === filter) {
      return i;
    }
  }
  
  return -1;
 }
  1. 다른 풀이
function get_find(text, string) {
  let strIndex = string.match(text);
  return strIndex === null ? -1 : strIndex.index;
}

function get_find(text, string) {
  let strIndex = string.search(text);
  return strIndex;
}
  1. 놓친 점 & 질문

문제 05. findLongestWord

  1. 나의 풀이
function find_longest_word(arr) {
  let max = 0;
  let index = 0;

  for (let i = 0; i < arr.length; i++) {
    if (max < arr[i].length) {
      max = arr[i].length;
      index = i;
    }
  }
  
  return arr[index]; 
}
  1. model solution
function find_longest_word(arr) {
  let longest = arr[0];
  for(let i = 0; i < arr.length; i++) {
    if(arr[i].length > longest.length) {
      longest = arr[i];
    }
  }
  
  return longest;
}
  1. 다른 풀이
function find_longest_word(strArr) {
  let longestWord = strArr[0];
  for (let i in strArr) {
    longestWord.length < strArr[i].length ? longestWord = strArr[i] : longestWord;
  }
  return longestWord;
}
  1. 놓친 점 & 질문

좋은 웹페이지 즐겨찾기