문제
문제 출처 - https://www.acmicpc.net/problem/9506
어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다.
예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다.
n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.
풀이
while문으로 i = 1부터 n 까지 loop 를 돌린다.
n % i 가 0이면, i 가 n 의 약수가 된다.
이렇게 구한 약수를 배열에 넣고, 이 약수들의 합을 계산하여 본래의 n 값과 같은 지 확인해야 하는데,
배열의 합을 구할 때, reduce 메소드를 사용한다.
const arr = [1, 2, 3];
const initVal = 0;
const sum = arr.reduce((accumulator, currentVal) => accumulator + currentVal, initVal);
// const sum = arr.reduce((a, b) => a + b, 0);
console.log(sum); // 출력 : 6
코드
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().split('\n');
let i = 0;
while (1) {
let arr = [];
let n = +input[i];
if (n === -1) break;
for (let j = 1; j < n; j++) {
if (n % j === 0) {
arr.push(j);
}
}
let result = arr.reduce((a, b) => a + b, 0);
if (n === result) {
let ans = arr.join(' + ');
console.log(`${n} = ${ans}`);
} else {
console.log(`${n} is NOT perfect.`);
}
i++;
}
'PS > 백준' 카테고리의 다른 글
백준 14681 javascript | node.js (0) | 2023.08.27 |
---|---|
백준 3009 javascript | node.js (0) | 2023.08.26 |
백준 11653 javascript | node.js (0) | 2023.08.25 |
백준 10172 javascript | node.js (0) | 2023.08.25 |
백준 10869 javascript | node.js (0) | 2023.08.25 |