https://github.com/FUNco247/Co_Test_Solution/blob/master/sumNotExistNum.js
0~9 사이의 숫자 배열이 주어지고 그 중 없는 숫자들의 합을 구하는 문제다.
function solution(numbers) {
numbers = [...new Set(numbers)];
let answer = 0;
for (let i = 0; i < 10; i++) {
const newNumbers = numbers.filter((e) => e !== i);
if (newNumbers.length === numbers.length) {
answer = answer + i;
}
}
return answer;
}
0에서부터 9까지 반복되도록 반복문을 작성하고 i값을 제외한 newNumbers
배열을 만들어 원배열인 numbers
와 길이를 비교했다.
그 길이가 같으면 i는 포함되어있지 않은 수 이므로 anwer에 더해준다.
numbers = [...new Set(numbers)];
배열안에 중복이 있는지 없는지 알 수 없어 중복을 제거하는 매소드를 사용했으나 다른 사람들의 답을 확인한 결과 input에 중복은 없는게 설정인것 같다. 주어진 상황을 잘 이해했으면 코드에서 불필요한 작업라인을 없애고 실행속도를 개선할 수 있었을 것이다.map()
같은 매소드를 더 공부해볼 필요가 있을것 같다. function solution(numbers) {
return 45 - numbers.reduce((cur, acc) => cur + acc, 0);
}
reduce() 매소드를 활용해 0~9의 총 합인 45에서 input배열의 합을 빼버렸다..... 정말 무릎을 탁 치게 만드는 풀이다...