728x90
문제
https://www.acmicpc.net/problem/4673
4673번: 셀프 넘버
셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,
www.acmicpc.net
코드
//실버5 셀프 넘버 //https://www.acmicpc.net/problem/4673 function selfNumber(n) { let number = n; //생성자인 n copy let result = 0; //숫자를 10으로 나누며 각 자릿수를 result에 더함 for (let i = 0; i < String(n).length; i++) { result += number % 10; number = Math.floor(number / 10); } return n + result; //입력받은 수 n과 result를 더하여 return } const range = 10000; let selfNumbers = new Array(range + 1).fill(true); //0~10000까지의 index를 가지는 배열 생성하고 true로 초기화 //selfNumber함수에 생성자 i를 인자로 줬을 때, return되는 수는 셀프넘버가 아니므로 false로 만들기 for (let i = 0; i <= range; i++) { selfNumbers[selfNumber(i)] = false; } //정답 출력 for (let i = 0; i < range; i++) { if (selfNumbers[i] === true) console.log(i); }
후기
- 처음에 규칙을 찾는데도 시간이 좀 걸렸고, 판단된 셀프넘버를 어떻게 처리해줘야하는지에서도 고민이 길어졌다.
- 다른 분의 풀이를 참고하여 범위가 주어졌으니 해당 크기의 배열을 선언하여 셀프넘버 여부를 처리해주는 게 시간 단축에도 좋아서 좋은 풀이라고 생각했다.
잘못된 내용이나 수정이 필요한 내용이 있으면 언제든 댓글 달아주세요 감사합니다 😀
'알고리즘 > BOJ' 카테고리의 다른 글
[백준] 보물 / JavaScript / node.js (0) | 2022.02.24 |
---|---|
[백준] N과 M(2) / JavaScript / node.js (0) | 2022.02.19 |
[백준] N과 M(1) / JavaScript / node.js (0) | 2022.02.19 |
[백준] 피보나치 함수 / JavaScript / node.js (0) | 2022.02.15 |
[백준] 소수 구하기 / JavaScript / node.js (0) | 2022.02.15 |