✨JSY
Published 2023. 8. 25. 17:09
백준 9506 javascript | node.js PS/백준
문제

문제 출처 - https://www.acmicpc.net/problem/9506

 

9506번: 약수들의 합

어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.

www.acmicpc.net

어떤 숫자 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
profile

✨JSY

@JUNSANG YOO

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!