문제 내용은 두 수를 받아서 왼쪽에 있는 숫자의 약수를 찾되, 1부터 시작해서 오른쪽에 있는 약수 횟수에 도달하면 해당 값을 출력해주면 되는데, 약수를 모두 구하는 과정에서 찾지 못했다면 0을 출력해주면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
// 약수 구하기 https://www.acmicpc.net/problem/2501
// 숫자 두개(N, M) 받아서 N을 1부터 나누기 시작하면서 M번째 약수를 발견하면 종료
public class getDivisor {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] split = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int cnt = 0;
int ans = 0;
for (int i = 1; i <= split[0]; i++) {
if (split[0] % i == 0) {
ans = i;
cnt += 1;
}
if (cnt == split[1]) {
System.out.println(ans);
break;
}
}
if (cnt < split[1]) {
System.out.println(0);
}
}
}
내용은 수를 받아서 1부터 시작해서 왼쪽 숫자까지 나눌 경우 0으로 떨어지는지 확인한 후 나누어 떨어진다면 카운터를 증가시키면서 카운터가 오른쪽 숫자까지 도달하면 해당 값을 출력하고 for 문을 break 시켜 끝내면 되고, 끝까지 돌렸는데도 오른쪽 횟수까지의 약수를 찾지 못했으면 0을 출력해주면 끝이다.
Leave a Reply