프로그래머스 코딩 문제 2021/09/13 - Lv.1 없는 숫자 더하기

이호현·2021년 9월 13일
1

Algorithm

목록 보기
136/138

[문제]

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


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


입출력 예

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

입출력 예 설명

입출력 예 #1

  • 5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.

입출력 예 #2

  • 1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.

[풀이]

function solution(numbers) {
  let answer = 0;
   
  for(let i = 0; i <= 9; i++) {
    if(!numbers.includes(i)) answer += i;
  }
   
  return answer;
}

숫자가 0부터 9사이의 범위에서만 존재하므로 반복문을 0부터 9까지 돌린다.

그러면서 numbers에 그 숫자가 있는지만 확인하고 없으면 값을 누적해서 그 값을 return.

function solution(numbers) {
  const total = 10 * (9 + 0) / 2;
   
  return total - numbers.reduce((acc, num) => acc += num, 0);
}

또 다른 방법으로 0부터 9까지의 합에서 numbers안의 숫자들을 모두 더한 차를 구하면 된다.

0부터 9까지의 합은 등차수열의 합 공식을 사용했다.

profile
평생 개발자로 살고싶습니다

0개의 댓글