✨JSY
article thumbnail
Published 2023. 8. 25. 17:18
백준 11653 javascript | node.js PS/백준
문제

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

 

11653번: 소인수분해

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

www.acmicpc.net

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

 

** N 이 1인 경우에는 아무것도 출력하지 않는다.

풀이

소수인 지 판별하는 isPrime 변수를 만들고, 함수처럼 이용한다.

(소수를 활용하는 알고리즘 문제에서 유용하게 사용할 예정, 이해 후 암기)

 

두 가지 케이스로 나누어 생각했다.

 

Case I. N 이 이미 소수인 경우

=> 소수 출력

 

Case II. N이 소수가 아닌 경우

=> i = 2 부터 시작하는 while문을 이용.

     N % i 가 0 인 경우, arr에 넣는다.

     N 이 i 와 같아질 때 loop를 빠져나온다.

 

코드
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().split('\n');

// 소수 판별
const isPrime = (n) => {
    if (n === 1) {
        return false;
    }

    for (let i = 2; i <= Math.sqrt(n); i++) {
        if (n % i === 0) {
            return false;
        }
    }

    return true;
}

let n = +input[0];
let arr = [];

// CaseI. 이미 소수인 경우
if (isPrime(n)) {
    console.log(n);
}

// CaseII. 주어진 수가 소수가 아닌 경우
else {
    for (let i = 2; i <= n; i++) {
        while(n % i === 0) {
            arr.push(i);
            n /= i;
        }

        if (n === i) break;
    }

    console.log(arr.join('\n'));
}

'PS > 백준' 카테고리의 다른 글

백준 14681 javascript | node.js  (0) 2023.08.27
백준 3009 javascript | node.js  (0) 2023.08.26
백준 9506 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

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