[백준] 2501번 약수 구하기 Java 문제 풀이

2023. 3. 20. 18:11카테고리 없음

728x90
반응형

문제풀이

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

interface Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st;

       int[] input = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
       int N = input[0], K = input[1], cnt = 0;

       for(int i=1; i<=N; i++) {
           if(N%i == 0) {
               cnt++;
           }
           if(cnt == K) {
               System.out.println(i);
               break;
           }
       }
       if(cnt < K) {
           System.out.println(0);
       }
    }
}

1부터 N까지 반복하면서 N의 약수를 찾아야 합니다.

 

약수를 만났을 경우 cnt 값을 증가시킵니다.

 

cnt 값이 K와 같게 되면 i는 N의 약수 중 K 번째로 작은 수가 됩니다.

i를 출력하고 반복을 종료합니다.

 

cnt가 K보다 작을 경우 약수의 개수가 K 만큼 충분하지 못한 경우입니다.

0을 출력합니다.

 

 

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

 

2501번: 약수 구하기

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

www.acmicpc.net

 

728x90
반응형