728x90
문제
https://www.acmicpc.net/problem/2501
자연수 N과 K가 주어졌을 때, 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
'IT 개발 관련 > [Algorithm]' 카테고리의 다른 글
[백준] 1072번 : 게임 - Java (0) | 2024.08.02 |
---|---|
[백준] 16926번 : 배열 돌리기 1 - Java (0) | 2024.08.01 |
[백준] 1251번 : 단어 나누기 - Java (0) | 2024.06.22 |
[백준] 18352번 : 특정 거리의 도시 찾기 - Java (0) | 2024.06.21 |
[백준] 1193번 : 분수찾기 - Java (0) | 2024.06.20 |