프로그래머스 없는 숫자 더하기

Updated:

문제

0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. input : [1,2,3,4,6,7,8,0] output : 14

1 ≤ numbers의 길이 ≤ 9 0 ≤ numbers의 모든 수 ≤ 9 numbers의 모든 수는 서로 다릅니다.

풀이

const solution = (numbers) => {
  const originNum = [1,2,3,4,5,6,7,8,9,0];

  let a = originNum.filter(x => numbers.filter(y => y === x).length > 0 ? false : true);
  let result = 0
  a.forEach(item => {
    result += item
  })
  return result
}

solution([1,2,3,4,6,7,8,0])
  • 내용상에서 0~9까지의 숫자로 제한이 되어있어서 originNum 이라는 변수 값으로 0~9가 포함된 배열 값을 넣어줍니다. 해당 orignNumfilter 메서드를 사용하여 배열과 배열 안에 같지 않은 값만 배열로 반환합니다. 그리고 반환된 배열 값을 forEach를 통하여 합산한 값을 리턴합니다.

새로운 풀이

const solution = (numbers) => {
  let setNum = 45;
  let kkk = numbers.reduce((cur,acc) => {
     return cur + acc
  },0)
  let result = setNum - kkk;
  return result;
}
solution([1,2,3,4,6,7,8,0])
  • 다른분의 풀이를 보자면 0~9를 더한 값이 45이니, 인자로 받아온 값은 reduce를 사용하여 인자를 다 더한 값을 반환하여, 45를 더한 값을 빼면 빠진 숫자의 합산과 동일하니 해당 풀이로 풀으신거 같다.

참고

velog : sjkim_jinnyk님의 [프로그래머스 / js] 없는 숫자 더하기