셀프 넘버 구하기

2022. 2. 10. 18:04에러&&공부노트

글쓴 개요 : 백준코드 문제풀이 중 셀프 넘버를 출력하는 문제에 대해 설명을 하고자 작성했습니다.

 

셀프 넘버란

양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의할 때, n을 d(n)의 생성자(Generator)라고 한다.

생성자가 없는 숫자를 셀프 넘버라고 한다.

예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다.

셀프 넘버 종류 ) 1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, 97 ...

 

문제)

10,000보다 작거나 같은 셀프 넘버를 한 줄에 하나씩 증가하는 순서로 출력한다.

 

풀이)

1. 우선 각 숫자별로 d(n)을 담는 배열을 생성한다.  // [2,4,6...]

2, 생성된 배열에서 셀프함수인 값을 찾아 출력한다.

 

const fn_result = () => {
  let _array = [];

  for (let i = 1; i < 10000; i++) {
    //숫자별로 d(n)값을 생성
    let num_string = String(i);
    let sum = i;
    for (let j = 0; j < num_string.length; j++) {
      sum += Number(num_string[j]);
    }
    _array.push(sum);
  }
  for (let i = 1; i < 10000; i++) {
      //생성된 배열에서 셀프 넘버 값 찾기
    _array.indexOf(i) < 0 && console.log(i);
  }
};
fn_result();

 

'에러&&공부노트' 카테고리의 다른 글

백준 1152번 풀이 node  (0) 2022.02.11
백준 1157 풀이 node  (0) 2022.02.11
백준 10809번 문제풀이(node)  (0) 2022.02.11
한수 개수 구하기  (0) 2022.02.10
CORS 에러  (0) 2022.02.07