[Programmers] 없는 숫자 더하기 - JS

devMag 개발 블로그·2022년 1월 14일

프로그래머스 문제 링크

문제

0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

제한사항

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

입출력 예시

numbersreturn
[1,2,3,4,6,7,8,0]14
[5,8,4,0,6,7,9]6


나의 풀이

나는 쉽게 생각해서 0부터 9까지 담긴 배열 arr이 있는데 그중에 numbers로 이적하는 녀석들이 있다고 생각했다.

arr= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 인데 이 중에 numbers 라는 배열로 이적하는 녀석을 제외하고 남아있는 값들의 합을 구해주면 된다.

문제에서 원하는 numbers에서 찾을 수 없는 값들의 총합원래배열의 총합 - numbers 배열의 총합 이라고 생각하고 풀었다.

function solution(numbers) {
  // numbers의 총합으로 쓰일 sum을 초기화해준다.
  let sum = 0;
  
  // 주어진 numbers를 순회하면서 하나씩 더해준다.
  for(let i = 0; i < numbers.length; i++){
    sum += numbers[i];
  }

  // 원래 배열의 총합인 45에서 주어진 numbers의 합계 값을 빼준다.
  // numbers로 이적하지 않고 남아있는 요소들의 합이 구해진다.
  let answer = 45 - sum;
  return answer;
}

다른 풀이

reduce를 이용한 방법인데 아직 이해를 못해서 reduce를 공부하고 있다.
reduce 공부를 하고서 다시 도전!

reduce() 공부한 글

function solution(numbers) {
    return 45 - numbers.reduce((cur, acc) => cur + acc, 0);
}
profile
최근 공부 내용 정리 Notion Link : https://western-hub-b8a.notion.site/Study-5f096d07f23b4676a294b2a2c62151b7

0개의 댓글