IT 개발 관련/[Algorithm]

[백준] 2501번 : 약수 구하기 - Java

Baileyton 2024. 6. 23. 22:37
728x90

문제

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

자연수 NK가 주어졌을 때, N의 약수들 중에서 K번째로 작은 수를 구하는 문제입니다. 만약 K번째 약수가 존재하지 않는다면 0을 출력합니다.

접근 방법

1. 주어진 N의 약수를 찾습니다.

2. 약수들을 리스트에 저장합니다.

3. 리스트를 오름차순으로 정렬하여 K번째 약수를 출력 or 작다면 0을 출력

코드

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        int N = Integer.parseInt(st.nextToken());
        int K = Integer.parseInt(st.nextToken());

        ArrayList<Integer> divisors = new ArrayList<>();
        for (int i = 1; i <= N; i++) {
            if (N % i == 0) {
                divisors.add(i);
            }
        }

        Collections.sort(divisors);
        System.out.println(K <= divisors.size() ? divisors.get(K-1) : 0);
    }
}

 

메모리:14264kb 시간:132ms

728x90