본문 바로가기

알고리즘 문제풀이/추천 문제

[ 백준 2501 ] 약수 구하기 (C++)

반응형
 

2501번: 약수 구하기

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

www.acmicpc.net

 

벡터를 생성하고 N을1부터 N까지의 수로 나눈 다음 나누어 떨어지는 숫자(약수)를 벡터에 추가해줬다. 벡터에는 약수만 있으므로 K-1번째(인덱스는 0부터 시작하므로) 숫자를 출력해주면 된다. 단, 벡터의 크기가 K보다 작으면 K째 작은 약수가 없으므로 0을 출력해준다.

 

#include <iostream>
#include <vector>
using namespace std;

int main(){
    
    int N, K;
    cin >> N >> K;
    
    vector<int> lst;
    
    for(int i = 1; i <= N; i++)
        if(N % i == 0)
            lst.push_back(i);
    
    if(lst.size() < K)
        cout << 0 << endl;
    else
        cout << lst[K - 1] << endl;
    
    return 0;
}
 
반응형