728x90
문제
어떤 자연수 p와 q가 있을 때, 만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다.
6을 예로 들면
- 6 ÷ 1 = 6 … 0
- 6 ÷ 2 = 3 … 0
- 6 ÷ 3 = 2 … 0
- 6 ÷ 4 = 1 … 2
- 6 ÷ 5 = 1 … 1
- 6 ÷ 6 = 1 … 0
그래서 6의 약수는 1, 2, 3, 6, 총 네 개이다.
두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다.
출력
첫째 줄에 N의 약수들 중 K번째로 작은 수를 출력한다. 만일 N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우에는 0을 출력하시오.
내 문제 풀이 :
브론즈 3에 랭크한 쉬운 문제였다.(이런.....)
처음에는 태그의 브루트포스를 보고 재귀를 이용해서 풀어보았지만, 계속 틀렸다.
그래서 쉽게 돌아가자는 생각으로 for문을 이용해 하나하나씩 체크하는 방식을 이용했는데,
문제가 쉽게 풀려서 어이가 없었던 문제였다.
for문을 통해서 indx와 K를 체크해주고 약수라면 answer를 i의 값으로 바꿔주자.
내 코드 :
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
static int N;
static int K;
static int answer = 0;
static int indx = 0;
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String NK = br.readLine();
String arr[] = NK.split(" ");
N = Integer.parseInt(arr[0]);
K = Integer.parseInt(arr[1]);
for (int i = 1; i <= N; i++) {
if (N % i == 0) {
indx++;
}
if (indx == K) {
answer = i;
break;
}
}
System.out.println(answer);
}
}
728x90
'BaekJoon' 카테고리의 다른 글
[백준 알고리즘] 2108번 : 통계학 (JAVA) 문제 풀이 (0) | 2023.01.11 |
---|---|
[백준 알고리즘] 11659번 : 구간 합 구하기4 (JAVA) 문제 풀이 (0) | 2023.01.09 |
[백준 알고리즘] 12919번 : A와 B 2 (JAVA) 문제 풀이 (0) | 2023.01.02 |
[백준 알고리즘] 17298번 : 오큰수 (Python) 문제 풀이 (0) | 2022.12.31 |
[백준 알고리즘] 1174번 : 줄어드는 수 (JAVA) 문제 풀이 (0) | 2022.12.30 |