0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers
가 매개변수로 주어집니다. numbers
에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
numbers
의 길이 ≤ 9numbers
의 모든 원소 ≤ 9numbers
의 모든 원소는 서로 다릅니다.numbers | result |
---|---|
[1,2,3,4,6,7,8,0] | 14 |
[5,8,4,0,6,7,9] | 6 |
입출력 예 #1
numbers
에 없으므로, 5 + 9 = 14를 return 해야 합니다.입출력 예 #2
numbers
에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.const solution = (numbers) =>
[1,2,3,4,5,6,7,8,9].filter(x => !numbers.includes(x)).reduce((a,b)=> a+b);
/*
내가 처음 작성한 코드이다.
filter, includes, reduce 세개를 사용하여 좋은코드는 아닌것 같다.(내 생각)
1~9 까지 원소로 가지고 있는 배열을 filter를 사용하여 1~9까지 포함하지 않는 요소를 가지고 reduce로
다 더해주어 return 해준다.
*
const solution = (numbers) => {
let num = 0;
for(let i = 1; i < 10; i += 1) {
if(!numbers.includes(i)) num += i
}
return num;
}
/*
for문과 if를 사용하여 작성을 해보았다.
O(n^2)방식이라 좋은 코드는 아니지만 여러방식으로 풀어보고 싶어서 풀었다.
for문으로 1부터 9까지 1씩 증가하는 루프를 만들어준다.
if를 통해서 i가 numbers에 포함되어있는지 확인하고 아니라면 num에 i를 더해준다.
for문이 종료되면 num을 return 해준다.
*/
const solution = (numbers) => 45 - numbers.reduce((acc, curr) => acc + curr);
/*
O(n) 방식으로 풀어본 코드이다.
실수가 없고 정수 1~9까지의 합을 더해준 값 45를 reduce를 통해 numbers의 요소의 값을 다 더해준 값의
차를 구하여 return 해준다.
*/
const solution = (numbers) => {
let num = 0;
for(let i = 0; i < numbers.length; i += 1) {
num += numbers[i]
}
return 45 - num
}
// SOLUTION3이랑 비슷하지만 reduce를 사용하지않고 for문을 사용하여 작성해보았다.