백준 4673 번 JavaScript 문제풀이

Cho Dragoo·2021년 5월 16일
1
post-thumbnail

JavaScript 백준 온라인 알고리즘 공부

백준 4673 번 JavaScript 문제풀이

셀프 넘버
https://www.acmicpc.net/problem/4673



본인이 제출한 답

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배열을 출력하면 정답으로 처리해준다.

profile
어떤 문제든 파악 할 수 있으며 해결책을 찾을 수 있는 개발능력을 꿈꾸고 있습니다.

0개의 댓글