JavaScript 백준 온라인 알고리즘 공부
백준 4673 번 JavaScript 문제풀이
let arr = [];
let answer = [];
for (let i = 1; i <= 10000; i++) {
let N = 0;
let stringNumber = String(i);
for (let j = 0; j < stringNumber.length; j++) {
N += Number(stringNumber[j]);
}
let nNum = i + N;
arr.push(nNum);
}
for (let i = 1; i <= 10000; i++) {
if (arr.indexOf(i) === -1) {
answer += i + "\n";
}
}
console.log(answer);
문제는 d(n)의 생성자의 공식을 제시하고 출력은 생성자가 없는 숫자인 셀프 넘버의 출력을 제시한다. 생성자를 가지는 수열은 만들 수는 있는데 그 반대인 셀프 넘버을 출력하는 발상이 떠올기기 너무 어려웠다.
일단 고민끝에 For문
으로 생성자를 가지는 수열의 arr배열
을 만들고 d(n)의 생성자의 공식을 적용한 숫자들을 1부터 10000
까지 순서대로 넣는다. 정답용으로 쓸 answer배열
을 생성, 마찬가지로 1부터 10000
까지 순서대로 대조해 arr배열에 없는 숫자를 차례대로 answer배열에 줄바꿈하면서 삽입한 후 한번만 answer배열을 출력하면 정답으로 처리해준다.