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

Yunki Kim·2023년 2월 6일
0

백준

목록 보기
104/104
post-thumbnail

문제


링크


코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
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 number = Integer.parseInt(st.nextToken());
        int index = Integer.parseInt(st.nextToken()) - 1;

        List<Integer> list = new ArrayList<>();
        for (int i = 1; i <= Math.sqrt(number); i++) {
            if (number % i == 0) {
                list.add(i);
                if (number / i != i) list.add(number / i);
            }
        }
        Collections.sort(list);

        System.out.println(list.size() > index ? list.get(index) : "0");
    }
}

리뷰

약수를 구한 뒤 약수 중 K번 째 작은수를 출력하는 문제이다.

약수는 기존처럼 제곱근을 이용해 구해주었다.
그리고 오름차순으로 정렬한 뒤에 K번째 작은 수는 인덱스 상에서는 K-1 번인것을 고려하여 리스트의 사이즈와 비교한 뒤 적절한 값을 출력하도록 하는 문제이다.

0개의 댓글