◆C#/C# : 백준 문제 풀이

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

진2_ 2024. 9. 21. 12:20
728x90
반응형
 

[백준] C++ & C# 약수 구하기 (2501번) 브론즈 3

 

 

📝 문제

 

어떤 자연수 n이 주어졌을 때, n의 약수들 중 k번째로 작은 수를 구하는 프로그램을 작성하시오.

 

 

🔎 입력

 

첫째 줄에 n과 k가 주어진다. (1 ≤ n ≤ 10,000, 1 ≤ k ≤ n)

 

 

🔎 출력

 

n의 약수들 중 k번째로 작은 수를 출력한다. 만약 n의 약수의 개수가 k개보다 적어서 k번째 약수가 존재하지 않는다면 -1을 출력한다.

 

 

🎀 입출력 예시

 

 

 

정답

 

C++

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

int main()
{
    int n, k;
    cin >> n >> k;
    
    vector<int> count;
    
    // n의 약수를 찾기
    for (int i = 1; i <= n; i++)
    {
        if (n % i == 0)
        {
            count.push_back(i);
        }
    }
    
    // 오름차순 정렬 (기본적으로 오름차순이므로 sort()만 호출)
    sort(count.begin(), count.end());
    
    // 약수의 개수가 k보다 적을 때
    if (count.size() < k) {
        cout << 0;  // 숫자 0을 출력
    } else {
        cout << count[k - 1];  // k번째 작은 약수 출력
    }
    
    return 0;
}

 

C#

 

using System;

class Program
{
    static void Main(string[] args)
    {
        string[] input = Console.ReadLine().Split();
        int n = int.Parse(input[0]);
        int k = int.Parse(input[1]);

        int count = 0;

        for (int i = 1; i <= n; i++)
        {
            if (n % i == 0)
            {
                count++;
                if (count == k)
                {
                    Console.WriteLine(i);
                    return;
                }
            }
        }

        Console.WriteLine(-1);
    }
}
728x90
반응형