https://www.acmicpc.net/problem/4673
const numArray = [1,2,3,4,5];
// numArray 원소의 합
const arrSum = numArray.reduce((acc, cur) => acc + cur); // 15
생성자를 구하는 것이 아닌 생성자가 없는 셀프넘버를 구하는 것이므로,
d(n) 함수에 1 ~ 10000까지의 수를 대입해서 arr 배열에 저장한다.
arr 배열에 저장된 수는 생성자가 있는 수를 의미한다.
생성자가 있는 수를 구한 뒤 1 ~ 10000까지 순환하면서
생성자가 있는 수 배열에 있지 않은 수(셀프넘버)만 모아서 출력했다.
function d(n) {
const num = String(n).split('').map((x) => Number(x));
const sum = n + num.reduce((acc, cur) => acc + cur);
return sum;
}
const arr = [];
// 1 ~ 10000로 생성자를 가진 수를 만듬
for(let j = 1; j <= 10000; j++) {
arr.push(d(j));
}
let result = '';
// 생성자를 가진 수 배열에 존재하지 않으면 셀프넘버이다.
for (let i = 1; i <= 10000; i++) {
if (arr.indexOf(i) === -1) {
i === 10000 ? result += `${i}` : result += `${i}\n`;
}
}
console.log(result);