[Problem Solving] 없는 숫자 더하기

Sean·2023년 1월 3일
0

Problem Solving

목록 보기
15/130

문제

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

조건

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

통과한 코드

아이디어

numbers의 길이가 1 이상 9 이하라 가능한 아이디어인 것 같다.

  • 0부터 9까지 하나씩 넣어놓은 숫자 배열 zerotonine을 만든다.
  • zerotonine을 하나씩 순회하면서 해당 수가 numbers 배열에 있는지 해당 인덱스를 Array.prototype.indexOf() 메소드로 확인한다.
  • 만약 메소드의 결과가 -1이면 numbers에 존재하지 않는 수이므로, answer에 더해준다.

코드

function solution(numbers) {
    var answer = 0;
    var zerotonine = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    
    zerotonine.forEach(num => {
        let idx = numbers.indexOf(num);
        idx == -1 ? answer += num : numbers.splice(idx, 1);
    })
    return answer;
}

더 좋은 코드

다른 사람이 Array.prototype.reduce() 메소드를 활용하여 한 줄로 끝내버렸는데, reduce 메소드도 정말 잘 이용해야겠다는 생각을 하게 된 계기가 되었다.

function solution(numbers) {
    return 45 - numbers.reduce((cur, acc) => cur + acc, 0);
}
profile
여러 프로젝트보다 하나라도 제대로, 깔끔하게.

0개의 댓글