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

a.rubz·2023년 4월 10일
0

백준

목록 보기
1/2
post-thumbnail
post-custom-banner

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


✨ Insight

약수는 두 수의 곱으로 볼 수 있음

6의 약수 => 1, 2, 3, 6

1이 약수임을 알면 6도 약수란 걸 알 수 있음

따라서 sqrt로 주어진 수의 제곱근까지만 반복문 가능

But, 9의 약수 => 1, 3, 9

3이 중복으로 리스트에 추가되므로 처리해줘야함

📃 Code => 124ms

import java.io.*;
import java.util.*;

public class Main {
    public void solution() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int num = Integer.parseInt(st.nextToken());
        int index = Integer.parseInt(st.nextToken());

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

        if (list.size() < index) {
            bw.write("0");
        } else {
            Collections.sort(list);
            bw.write(String.valueOf(list.get(index-1)));
        }

        bw.flush();
        br.close();
        bw.close();

    }

    public static void main(String[] args) throws Exception {
        new Main().solution();
    }
}


💡 Keyword

- BufferedReader, BufferedWriter, StringTokenizer
- BufferedWriter로 출력시, valueOf로 값 바꿔주기

profile
🔥 개발 공부 🔥
post-custom-banner

0개의 댓글