문제설명

 

소스코드

#include <iostream>
using namespace std;
int main()
{
	int N, K; int count = 0;
	cin >> N >> K;
	int* arr = new int[N];
	for (int i = 1; i <= N ; ++i) if (N % i == 0) arr[count++] = i;
	if (count < K) cout << "0";
	else cout << arr[K - 1];
}

 

풀이

  • N개 만큼 int형 배열 동적할당
  • N을 i로 나누었을 때 나머지가 0이면 arr[count]에 i를 대입시키고 i를 증가시킴(배열에는 약수가 작은 순서대로 들어감)
  • count가 K보다 작으면 0을 출력 그렇지 않으면 arr[K - 1]을 출력 (배열의 인덱스는 0부터 시작하기 때문)