본문 바로가기

백준/JavaScript

[JS] 백준 약수, 배수와 소수 - 11653번

728x90

 

오늘은 이번 단계의 마지막 문제이다.

시골에 와서 와이파이가 없다...(즉... 핫스팟을 틀고 빠르게 문제를 풀어야한다.)

 

 

문제 11653번

https://www.acmicpc.net/problem/11653

 

11653번: 소인수분해

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

www.acmicpc.net

 

이 문제는 2부터 시작하여 입력받은 수까지 반복문을 돌린다. 만약 입력받은 수가 1이면 소인수분해를 할 수 없기 때문에 반복문을 빠져나와준다. 그리고 입력받은 수에서 2부터 입력받은 수까지 나눠줬을 때 나머지가 0이 되는 숫자를 배열에 넣어준다. 여기서 2가 2번이 나눠진다면 그만큼을 더 while문을 통해 나눠준다. 마지막으로 foreach를 이용하여 소인수를 넣어준 배열을 순회한다. 이로써 하나씩 줄바꿈이 되어 출력이 된다.

 

const readFileSyncAdress = process.platform === 'linux' ? '/dev/stdin':'./input.txt'
const input = require("fs").readFileSync(readFileSyncAdress).toString().trim();

let n = Number(input);
let result = [];

for(let i=2;i<=n;i++){
    if(n===1){
        break;
    }
    while(n%i===0){
        n/=i;
        result.push(i);
    }
}

//배열 순회
result.forEach(element => {
    console.log(element);
});

 

 

 

 

[참고] https://velog.io/@gusdh2/JS%EB%B0%B1%EC%A4%80-11653%EB%B2%88-%EC%86%8C%EC%9D%B8%EC%88%98%EB%B6%84%ED%95%B4-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8node.jsjavascript%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8
728x90