[백준/BOJ] 11653번 소인수분해 (Javascript / Node js)

2023. 8. 30. 17:19코딩 테스트 (BOJ)

11653번: 소인수분해 (acmicpc.net)

 

11653번: 소인수분해

첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.

www.acmicpc.net

문제해석

 

입력받은 N을 2로 나누어지지 않을때까지 나누고 나눌 때마다 2를 measure 배열에 추가한다. 나누어 떨어지지 않으면 3으로 증가,

 

마찬가지로 3으로 나누어지지 않을때까지 나누고 나눌때마다 3을 배열에 추가한다. 나누어 떨어지지 않으면 5로 나눈다.

3에서 4로 넘어가지 않은 이유는 4로 나누어질 수는 이미 2로 나뉘었기 때문이다.

 

이를 N이 1이 될때까지 반복하면 (3 -> 5)로 넘어가는 과정에서 보였 듯 배열에는 자연스럽게 소수만 들어가게 된다.

 

마지막으로 measure 배열의 원소들을 차례대로 모두 출력해주면 끝.

 

전체코드
 
const fs = require("fs");

const input = fs.readFileSync("../input.txt").toString();

var N = Number(input);
var measure = [];

var index = 2;

while(N !== 1){
    if(N % index == 0){
        measure.push(index);
        N = N / index;
    }else{
        index++;
    }
}

measure.map(item => console.log(item));