반응형
● 문제 접근 과정
1. 두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오.
2. 첫째 줄에 N의 약수들 중 K번째로 작은 수를 출력한다. 만일 N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우에는 0을 출력하시오.
3. N의 약수들을 구하기 위해 N번만큼 반복하고, 딱 나누어 떨어질 경우 배열에 저장.
4. cnt와 j도 같이 증가.
5. cnt보다 k값이 더 작거나 같다면, 해당 인덱스를 출력.
6. 아니라면 0을 출력.
● 구현
#include <iostream>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
int cnt = 0;
int a[10000];
int j = 0;
for (int i = 1; i <= n; i++) {
if (n % i == 0) {
a[j] = i;
j++;
cnt++;
}
}
if (cnt >= k)
cout << a[k - 1];
else
cout << 0;
return 0;
}
https://www.acmicpc.net/problem/2501
반응형