없는 숫자 더하기

이정민·2022년 5월 11일
0

알고리즘

목록 보기
7/23

없는 숫자 더하기

문제 설명
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

내가 푼 방법

function solution(numbers) {
    const arr = [0,1,2,3,4,5,6,7,8,9]
    let sum = 0
    for (let i = 0; i< arr.length; i++){
        if(arr.includes(numbers[i])){
           sum += numbers[i]}
    }
    return 45-sum
    }

numbers에 들어갈 수 있는 값은 0부터 9까지 값이므로 arr를 선언해준다음
그 arr에 numbers가 포함되어있는 값인지 .includes()를 통해 확인하고 그렇다면 합을 더한다. 이 후 0부터 9까지의 합인 45에서 해당값을 빼주면 해결

그런데 다시 보니 굳이 arr를 정의해주고 for문을 돌리지 않아도 해결가능한 문제였다. 처음에

if(!arr.includes(numbers[i]))

이런식으로 작성하려다 보니 코드가 저렇게 되었는데
그냥

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

이렇게만 작성해도 문제는 해결된다.

처음에 생각했던 방향은

function solution(numbers) {
    let answer = 0;

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

    return answer;
}

이것으로 왜 그렇게 복잡하게 꼬아서 생각했는지 모르겠다..ㅜㅜ

출처:https://programmers.co.kr/learn/courses/30/lessons/86051/solution_groups?language=javascript

0개의 댓글