문제 설명
0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.제한사항
1 ≤ numbers의 길이 ≤ 9
0 ≤ numbers의 모든 원소 ≤ 9
numbers의 모든 원소는 서로 다릅니다.
이 문제를 처음 봤을 때, 이렇게 접근하면 좋을 것 같았다:
function solution(numbers) {
// 0부터 9까지의 배열을 만들자
const allNumbers = Array.from({ length: 10 }, (_, i) => i);
// numbers 배열에 없는 숫자들을 찾아보자
const missingNumbers = allNumbers.filter((num) => !numbers.includes(num));
// 찾은 숫자들을 모두 더하면 끝!
return missingNumbers.reduce((sum, num) => sum + num, 0);
}
Array.from()
으로 배열 만들기
{ length: 10 }
으로 길이가 10인 빈 배열을 먼저 만든다.(_, i) => i
로 0부터 9까지 숫자를 채워넣는다._
는 사용하지 않는 값이라 그냥 스킵한다!filter()
로 없는 숫자 찾기
includes()
로 numbers 배열에 있는지 확인하고reduce()
로 합 구하기
function solution(numbers) {
return 45 - numbers.reduce((cur, acc) => cur + acc, 0);
}
수학적 접근이 돋보인다
장단점을 살펴보면