본문 바로가기

주5일알고리즘

Programmers : 없는 숫자 더하기 with JS

<나의 풀이> 

function solution(numbers) {
    let box = [0,1,2,3,4,5,6,7,8,9];
    let answer = 45;
    box.map((item) => {
        if(numbers.includes(item)){
            answer -= item;
        }
    })
    return answer;
}

 

<가장 많은 좋아요를 받은 풀이>

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

reduce를 쓰면 뭔가 더 간단해질 거 같았었는데, 

 

역시나 이렇게 간단해질 수 있었구나 싶었다.

 

주어진 배열의 값들을 끄집어내면서 다 더한 값을,

0~9까지의 숫자를 더한 값(=45)에서 빼면,

0~9까지의 숫자 중 없는 걸 다 더한 것과 같은 값이 나옴.

 

#reduce 사용법 복습

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const sum1 = numbers.reduce((acc, cur) => acc + cur);
//초기값이 주어지지 않았으므로, acc는 1의 값, cur은 2의 값으로 시작.
//acc 3, cur 4의 값으로 다음 동작
//... 반복하여 acc 45, cur 10으로 마지막 acc + cur 값인 55가 리턴됨. 

console.log('sum1 =', sum1);