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

ne_ol·2022년 1월 14일
0
post-thumbnail

문제 설명

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

제한사항

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

입출력 예

numbersresult
[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 해야 합니다.

기본 solution 코드

function solution(numbers) {
    var answer = -1;
    return answer;
}

문제 풀이

function solution(numbers) {
    var answer = 0;
    for(let i=0; i<10; i++){
        if(!numbers.includes(i)) answer += i; // numbers가 i를 포함하지 않는다면, answer에 그 i 값들을 더해라
    } 
    return answer;
}

풀이 설명

구글링 해서 .includes() 힌트를 얻었다.
0~9까지인 i 중에 numbers에 없는 숫자들만 더하게 했다.

사용 함수

  • Array.includes(valuetofind[, fromIndex]): 배열이 특정 요소를 포함하고 있는지 판별
  • ! (논리 연산자): true -> false, false -> true
  • JS default false 값: "", false, NaN, undefined, null, 0

(출처: https://developer.mozilla.org/ko/)


다른 풀이

function solution(numbers) {
    return 45 - numbers.reduce((cur, acc) => cur + acc, 0);
}

다른 풀이 설명

  1. 사용된 함수
  • .reduce(callback[, initialValue])
    • callback
      • accumulator
      • currentValue
      • currentIndex
      • array
    • 배열의 모든 값 합산
var sum = [0, 1, 2, 3].reduce(function (accumulator, currentValue) {
  return accumulator + currentValue;
}, 0); 

이것은

var total = [ 0, 1, 2, 3 ].reduce(
  ( accumulator, currentValue ) => accumulator + currentValue,
  0
);

와 같다.

(출처: https://developer.mozilla.org/ko/)

  1. 풀이
  • .reduce 함수를 정확히 이해하지는 못했지만, 0~9까지의 합인 45에서 .reduce 함수를 적용하여 합산한 배열의 모든 값을 빼주었다.
  1. 천잰가?
profile
개발되는 중입니다.

0개의 댓글