본문 바로가기

백준/JavaScript

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

728x90

 

 

문제 2501번

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

 

2501번: 약수 구하기

첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다.

www.acmicpc.net

 

이 문제는 N만큼 for문을 사용하여 나눠지는 i를 배열에 넣으면 될 것 같다. 만약에 배열의 길이가 K보다 작을 경우 K번째 약수가 존재하지 않는 경우라는 뜻이기 때문에 0을 출력해준다.

 

여기서 for문을 사용할 때는 i가 1부터해야 약수인 것을 계산할 수 있다. 그리고 K번째는 인덱스로 K-1이다.

 

배열에 넣을 때 push로 해야하는데 + 로 해버려서 틀렸다...

const readFileSyncAdress = process.platform === 'linux' ? '/dev/stdin':'./input.txt'
const [N,K] = require("fs").readFileSync(readFileSyncAdress).toString().trim().split(' ').map(x=>Number(x));

let num=[];
for(let i=1;i<=N;i++){
    if(N%i===0){
        num.push(i);
    }
}
if(num.length<K){
    console.log(0);
} else{
    console.log(num[K-1]);
}

 

 

 

처음에 계속 틀려서 뭐가 잘못했는지 보니 약수가 없는 경우를 생각해주지 않았다.

그래서 약수의 개수가 K보다 작은 경우 0을 출력해주도록 하였다.

 

 

 

 

728x90