Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 약수 구하기 (2501) (자바/Java) 본문

알고리즘문제/백준 문제(Java)

[백준] - 약수 구하기 (2501) (자바/Java)

luke-king 2024. 3. 29. 17:08

 

 

 

 

 

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

 

2501번: 약수 구하기

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

www.acmicpc.net

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

풀이.


 

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int K = sc.nextInt();

        int[] arr = new int[N];
        int cnt = 0;
        for (int i = 1; i <= N; i++) {
            if (N % i == 0) {
                arr[cnt++] = i;
            }
        }

        System.out.println(arr[K - 1]);
    }
}

 

이번 문제는 약수 구하기 문제다!

N의 정수를 입력해 약수를 구한 뒤 K번째의 약수를 찾는 문제. 크게 어려움이 없던 문제 같다.

그럼 바로 풀이로 가보겠다!

 

1. 약수를 담기위해 배열을 만들어준다. 크기는 N정수의 크기를 넘지 않으니 N크기 만큼 해줬다.

 

2. cnt 변수는 for문에서 약수를 찾는 조건식이 만족 할때마다 index 증가를 위해 만들어둔 변수이다.

 

3. 그럼 출력은 K번째에서 - 1 을 해주면 원하는 값이 나온다!!

( -1을 해준 이유는 배열은 0부터 시작하므로 6의 약수에서 3번째를 찾으려 했을 경우 6이 나오게 된다. 그러므로 -1을 해줘야 한다.)