백준4673 - 셀프 넘버 node.js 본문
반응형
https://www.acmicpc.net/problem/4673
문제는 문제에서 말하는 셀프넘버를 모두 구하는 문제다.
문제 해결 방식
문제에서 말하는 셀프 넘버인 수를 직접 구하기는 어렵단 생각이 들어, 셀프 넘버가 아닌 수를 먼저 모두 찾은 뒤, 전체 10000 이하의 자연수에서 셀프 넘버가 아닌 수를 제외하는 방식으로 로직을 구현했다.
const table = {};
for (let i = 1; i <= 10000; i++) {
const str = String(i);
let k = i;
for (let j = 0; j < str.length; j++) {
k += Number(str[j]);
}
table[k] = true;
}
먼저 다음과 같은 로직으로, 셀프 넘버가 아닌 생성자로 만들어진 수를 구하고, 이를 셀프 넘버가 아닌 수를 남을 table 객체에 추가했다.
const result = [];
for (let i = 1; i <= 10000; i++) {
if (!table[i]) result.push(i);
}
이후 아래와 같은 반복문을 순회하며, 생성자로 만들어지지 않은 수만 결괏값을 담는 배열에 추가했다.
전체 소스 코드
const fs = require("fs");
const input = fs
.readFileSync(process.platform === "linux" ? "/dev/stdin" : "입력.txt")
.toString()
.trim()
.split("\n");
function solution(data) {
const table = {};
for (let i = 1; i <= 10000; i++) {
const str = String(i);
let k = i;
for (let j = 0; j < str.length; j++) {
k += Number(str[j]);
}
table[k] = true;
}
const result = [];
for (let i = 1; i <= 10000; i++) {
if (!table[i]) result.push(i);
}
console.log(result.join("\n"));
}
solution(input);
반응형
'개발 > algorithm' 카테고리의 다른 글
백준3182 - 한동이는 공부가 하기 싫어! (DFS) node.js (0) | 2024.01.19 |
---|---|
백준1051 - 숫자 정사각형 (완전탐색) node.js (0) | 2024.01.17 |
백준17352 - 여러분의 다리가 되어 드리겠습니다 (find-union) node.js (1) | 2024.01.13 |
프로그래머스 - Lv.2 리코쳇 로봇 (BFS) node.js (0) | 2024.01.11 |
백준2578 - 빙고 node.js (1) | 2024.01.09 |
Comments