셀프 넘버 구하기
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 |