프로그래머스 없는 숫자 더하기
Updated:
문제
0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. input : [1,2,3,4,6,7,8,0] output : 14
1 ≤ numbers의 길이 ≤ 9 0 ≤ numbers의 모든 수 ≤ 9 numbers의 모든 수는 서로 다릅니다.
풀이
const solution = (numbers) => {
const originNum = [1,2,3,4,5,6,7,8,9,0];
let a = originNum.filter(x => numbers.filter(y => y === x).length > 0 ? false : true);
let result = 0
a.forEach(item => {
result += item
})
return result
}
solution([1,2,3,4,6,7,8,0])
- 내용상에서 0~9까지의 숫자로 제한이 되어있어서
originNum
이라는 변수 값으로 0~9가 포함된 배열 값을 넣어줍니다. 해당orignNum
을filter
메서드를 사용하여 배열과 배열 안에 같지 않은 값만 배열로 반환합니다. 그리고 반환된 배열 값을forEach
를 통하여 합산한 값을 리턴합니다.
새로운 풀이
const solution = (numbers) => {
let setNum = 45;
let kkk = numbers.reduce((cur,acc) => {
return cur + acc
},0)
let result = setNum - kkk;
return result;
}
solution([1,2,3,4,6,7,8,0])
- 다른분의 풀이를 보자면 0~9를 더한 값이 45이니, 인자로 받아온 값은
reduce
를 사용하여 인자를 다 더한 값을 반환하여, 45를 더한 값을 빼면 빠진 숫자의 합산과 동일하니 해당 풀이로 풀으신거 같다.