글 작성자: 취업중인 피터팬
728x90

https://www.acmicpc.net/problem/2501

 

2501번: 약수 구하기

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

www.acmicpc.net

 

문제 설명

 

약수를 모두 찾고 연하는 순서의 약수를 출력하는 문제입니다.

 

문제 풀이

 

약수는 반복문으로 모두 나눠서 확인하고 count는 조건문을 이용해 문제를 풀었습니다.너무 간단한 문제임으로 주석만 보셔도 이해할 수 있을 것입니다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int num = sc.nextInt();//수
        int seq = sc.nextInt();//찾을 순서 약수
        int count = 0;//약수를 찾기 우한 count
        boolean flag = false;//해당 순서의 약수가 없을 경우를 위한 flag
        
        //해당 수 만큼 약수를 돌려서 확인한다.
        for(int i=1; i<=num; i++){
            //약수인 경우 count을 늘린다.
            if(num%i == 0){
                count++;
                //count와 순서가 같을 경우 flag를 변경하고 헤당 약수를 출력한다.
                if(count == seq){
                    flag = true;
                    System.out.println(i);
                }
            }
        }

        //약수가 출력되지 않았을 경우 0을 출력한다.
        if(flag == false){
            System.out.println(0);
        }
    }
}