[js알고리즘]10부제

Updated:

문제

첫번째 함수 인자의 값과 나머지 배열의 값의 “끝의 숫자가” 동일하면 카운트를 늘리는 문제

문제해설

주어진 숫자(첫번째 인자)와 두번째 숫자들의 일의 자리 숫자를 보고 동일하면 카운트 숫자를 늘리는 문제이므로

  1. 첫번째 인자를 뺀 나머지의 숫자들을 배열로 정렬하고
  2. 해당 카운트 갯수를 저장하기 위한 변수를 만들어 주었습니다.
  3. 각 배열 요소의 조건을 판별하기 위해서 filter매서드를 이용하였으며,
  4. “나머지 1의 자리 수”를 구하기 위해서 해당 인자의 값을 10으로 나누어 일의 자리를 찾고
  5. 계산된 일의 자리 숫자와 첫번째 인자의 값이 동일하다면 카운트 갯수를 늘리도록 하였습니다.

해결방법

case1

const soltuion = (num, a, b, c, d, e, f, g) => {
  const arr = [a, b, c, d, e, f, g];
  let answer = 0;

  arr.filter(el => (el % 10 === num ? answer++ : null));
  return answer;
};
soltuion(3, 25, 23, 11, 47, 53, 17, 33);

case2

const soltuion = (num, a, b, c, d, e, f, g) => {
  const arr = [a, b, c, d, e, f, g];
  let answer = 0;

  for (let x of arr) {
    console.log(x % 10, 'half');
    if (x % 10 === num) answer++;
  }
  return answer;
};
soltuion(3, 25, 23, 11, 47, 53, 17, 33);

배운점

일의 자리를 구하는 공식을 10으로 나누면 되는데 해당 공식을 처음에는 생각하지 못하고 각 요소를 순회할 때 끝의 숫자를 가져오려고 해서 시간적인 딜레이가 발생하였습니다. 1의 자리를 구하는 해당 공식을 잊지 않기로 하였습니다.