카테고리 없음

[js] 없는 숫자 더하기_Add Missing Numbers

우금붕 2023. 1. 16. 10:39

[문제 설명]

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

 

 

[문제 풀이]

function solution(numbers) {
    var answer = 0;
    const lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    let newlst = lst.filter(x => !numbers.includes(x))

    for (let i=0; i<newlst.length; i++) {
        answer += newlst[i]
    }
    return answer;
}

 

[해설]

우선 0~9 를 담은 리스트 lst를 생성합니다.

filter와 includes 함수를 활용하여 두 리스트 간(numbers, lst) 차집합을 구하고, for문으로 newlst의 모든 원소를 더해줍니다.

 

*filter, includes 함수 내용은 아래 게시글에서 확인해주세요.

2023.01.18 - [취준/[개발공부] javascript] - 프로그래머스 자주 사용되는 함수 모음

 

프로그래머스 자주 사용되는 함수 모음

* set 집합. 중복을 허용하지 않습니다. let ot = [...new Set([...one, ...two])]; 여기서는 Spread Operator(전개연산자) '...'로 Set 객체의 값들을 하나씩 전개, 즉 꺼내서 새로운 배열의 원소로 넣고, ot에 저장하

yoo-hk.tistory.com

 

 

[다른 사람 풀이]

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

0~9의 합이 45인 것을 이용하였습니다. reduce 함수로 numbers의 합을 구하여 0~9 합에서 빼주었습니다.

 

 

* reduce 함수 내용은 아래 게시글에서 확인해주세요.

2023.01.12 - [취준/[문제풀이] programmers] - [js] 평균 소득액 구하기_Disaster Assistance Amount

 

 

 

[느낀점]

단순히 많은 함수를 알고, 1차원적으로 생각해서는 간결한 코드를 작성하기 어려운 것 같다. 함수의 기초를 단단히 다지되, 문제를 여러 방향으로 바라보고 다양한 방법으로 해결할 수 있도록 여러 차례 도전해보는 것이 좋을 것 같다.

 

 

 

 

 

[github] - AddMissingNumbers.js

https://github.com/yh725k/javascript.git

 

GitHub - yh725k/javascript

Contribute to yh725k/javascript development by creating an account on GitHub.

github.com