코딩 테스트/백준

백준 - [단계별로 풀어보기 약수, 배수와 소수 1] 2501 약수 구하기

devrabbit22 2026. 3. 26. 18:11

이번 문제는 입력받은 수 N의 약수 중 K번째로 작은 값을 출력하는 문제이다.
약수는 N을 나누었을 때 나머지가 0이 되는 수이므로, 1부터 N까지 반복하면서 약수를 찾을 때마다 카운트를 증가시킬 수 있다.
이때 카운트가 K에 도달하면 해당 값을 출력하면 되므로, 모든 값을 끝까지 확인하지 않고도 문제를 해결할 수 있다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    internal class math1
    {
        static void Main(string[] args)
        {
            //백준 2501 약수 구하기
            string[] input = Console.ReadLine().Split();
            int N = int.Parse(input[0]);    //자연수 N
            int K = int.Parse(input[1]);    //자연수 N의 약수 중 K번째로 작은 수
            int count = 0;

            for (int i = 1; i <= N; i++)
            {
                if (N % i == 0)
                {
                    count++;

                    if (count == K)
                    {
                        Console.WriteLine(i);
                        return;
                    }
                }
            }

            Console.WriteLine(0);
        }
    }
}

출력 결과 1
출력 결과 2