반응형
1.Scanner를 이용한 방법
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K = sc.nextInt();
List<Integer> num = new ArrayList<Integer>();
for(int i=1; i<=N; i++){
if(N % i == 0){
num.add(i);
}
}
num.sort(Comparator.naturalOrder());
if(num.size() < K){
System.out.println(0);
}
else{
System.out.println(num.get(K-1));
}
sc.close();
}
}
2. BufferedReader를 이용한 방법
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Comparator;
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 N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
List<Integer> num = new ArrayList<Integer>();
for(int i=1; i<=N; i++){
if(N % i == 0){
num.add(i);
}
}
num.sort(Comparator.naturalOrder());
if(num.size() < K){
System.out.println(0);
}
else{
System.out.println(num.get(K-1));
}
br.close();
}
}
처음에 배열을 이용해서 하려고 했는데 자꾸 ArrayIndexOutOfBoundsException 이 나서 List로 바꾸어서 약수 값을 넣고 sort로 오름차순 정렬을 해준 뒤, 구하는 방식을 이용했다.
sort는 굳이 쓰지 않아도 되는 것 같긴 한데 혹시나 하는 마음에 넣었다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1978 - 소수 찾기 (JAVA/ 자바) (0) | 2024.04.06 |
---|---|
[백준] 9506 - 약수들의 합 (JAVA/ 자바) (0) | 2024.04.05 |
[백준] 5086 - 배수와 약수 (JAVA/ 자바) (0) | 2024.04.01 |
[백준] 2869 - 달팽이는 올라가고 싶다 (JAVA/ 자바) (0) | 2024.04.01 |
[백준] 1193 - 분수 찾기 (JAVA/ 자바) (0) | 2024.03.26 |