[JS] 4673번 - 셀프 넘버

박세현·2021년 5월 31일
0

알고리즘

목록 보기
9/19

셀프 넘버

문제 출처

https://www.acmicpc.net/problem/4673


key point

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);

profile
Front End 공부노트

0개의 댓글

관련 채용 정보