[백준 11653] 냅다 시작 Day7 - 기본 수학 2

김민지·2022년 12월 25일
0

냅다 시작 백준

목록 보기
16/118

[백준 11653] 기본 수학2 3단계. 소인수분해

✨ 문제 ✨

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

= 입력 =

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

= 출력 =

N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다.

= 예제 입력 1 =

72

= 예제 출력 1 =

2
2
2
3
3

= 예제 입력 2 =

3

= 예제 출력 2 =

3

= 예제 입력 3 =

6

= 예제 출력 3 =

2
3

= 예제 입력 4 =

2

= 예제 출력 4 =

2

= 예제 입력 5 =

9991

= 예제 출력 5 =

297
103

✨ 정답 ✨

// const { json } = require("express/lib/response");
// const fs = require("fs");
// const filePath = process.platform === "linux" ? "/dev/stdin" : "./예제.txt";
// let input = fs.readFileSync(filePath).toString().split("\n");
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');

let N = parseInt(input);
let divisorArray = [];
let i = 2;

// for (i = 2; i <= Math.sqrt(N); i++) {
//     while (N % i === 0) {
//         divisorArray.push(i)
//         N = N / i
//         i=1
//         if (i>N){
//             break;
//         }
//     }
// }

while (true) {
    if (N % i === 0) {
        divisorArray.push(i)
        N = N / i
        i = 1;
    }
    i++
    if (i > N) {
        break;
    }
}

divisorArray.sort((a, b) => a - b).map((x) => { console.log(x) });

주석처리한 부분처럼 하면 while문 조건 걸기가 어려워진다.
while문이 끝나지 않는 불상사가 발생하여 while문을 가장 바깥쪽으로 빼 주어 겨우 해결했다.

💡💡 기억해야 할 점

  1. while문은 끝내는 조건을 반드시 걸어 주어야 한다.
profile
이건 대체 어떻게 만든 거지?

0개의 댓글