| 제출
function solution(numbers) {
let scope = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
return scope.filter((num) => numbers.indexOf(num) === -1).reduce((acc, val) => acc + val);
}
| 풀이과정
filter 메서드로 scope 배열에서 numbers 배열에 없는 숫자들을 필터링한다.
그리고 해당 수들을 reduce를 사용하여 더해주면 된다.
다른 사람 풀이
function solution(numbers) {
return 45 - numbers.reduce((cur, acc) => cur + acc, 0);
}
0부터 9까지의 합은 45이다. 45에서 numbers 배열의 숫자들을 더한 값을 빼주면 numbers 배열에 속하지 않은 숫자들의 합을 구할 수 있다.
복잡하게 문제 그대로 메서드로 풀었던 나에게는 재밌는 풀이었다 ㅋㅋㅋ!!
| 개념
String.prototype.indexOf()
- 문자열에서 지정된 요소가 발견되는 첫 번째 인덱스를 반환하고 해당 값이 없으면 -1을 반환한다.
Array.prototype.reduce()
arr.reduce(callback[, initialValue])
- 배열의 각 요소에 대해 주어진 reducer 함수를 실행한 결과값을 반환한다.
- 매개변수는 다음과 같다.
- 콜백함수
- 누산기
- 현재 처리할 값
- 처리할 값의 인덱스, 초기값을 제공할 경우 0부터 그렇지 않을 경우 1부터 시작한다. (optional)
- 처리할 값의 원본 배열 (optional)
- 초기값 (optional)
- 지정하지 않으면 배열의 첫 번째 요소를 초기값으로 사용한다.
- 콜백함수
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 최소직사각형 - level 1 (javascript) (1) | 2022.09.19 |
---|---|
[프로그래머스] 내적 - level 1 (javascript) (0) | 2022.09.19 |
[프로그래머스] 음양 더하기 - level 1 (javascript) (0) | 2022.09.19 |
[프로그래머스] 약수의 개수와 덧셈 - level 1 (javascript) (0) | 2022.09.19 |
[프로그래머스] K번째 수 - level 1 (javascript) (0) | 2022.09.05 |