본문 바로가기
백준 알고리즘

[JS]백준 11653번 소인수분해

by 오늘의코더 2022. 7. 15.
반응형

출처

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

11653번: 소인수분해

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

www.acmicpc.net

문제

정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. (1 ≤ N ≤ 10,000,000)

풀이

이 문제는 입력받은 수를 바탕으로 소인수분해한 것을 출력하는 문제이다. 나는 이 문제를 풀기 위하여 먼저 전에 썼던 방식대로 1부터 인풋까지의
소수를 뽑아내서 인풋을 소수로 하나씩 대입하며 나누는 방식으로 접근하였다.

하지만 굳이 그럴필요 없이 2부터 하나씩 증가하면서 나눠주면 되었다.

요약

  1. while문을 돌면서 input을 devide로 나눔.
  2. 나눠질 경우 devide를 2로 초기화.
  3. 안나눠질경우 2가 인수가 아니라는것, devide를 1씩증가.
  4. 다 나눠서 input이 1이 된다면 반복문 탈출.

코드

const fs = require('fs');
let input = Number(fs.readFileSync('/dev/stdin').toString());
let devide = 2;

while (input > 1) {
    if (input % devide === 0) {
        input /= devide;
        console.log(devide);
        devide = 2;
    } else {
        devide++;
    }
}



반응형

댓글