해당 문제도 쉬운 문제였다!
해당 문제는 시간 복잡도와 메모리 제한은 10,000개 이하이기 때문에 신경 안 써도 된다고 판단했다!
내가 생각한 로직이다.
for (i = 0; i < n; i++)
n * k == 0 -> 배열에 i값 적재
출력값에 arr[k-1]값 출력
여기서 생각한건, 기본적인 arr를 사용한다면 k번째의 값을 구하는 로직이 복잡해지기 때문에 ArrayList로 구현했다!
[최종코드]
import java.io.*;
import java.util.*;
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> arr = new ArrayList<>();
for (int i = 1; i <= n; i++) {
if (n % i == 0 || i == 1)
arr.add(i);
}
if (k > arr.size())
System.out.println("0");
else
System.out.println(arr.get(k-1));
}
}
배운점
해당 문제는 ArrayList로 배열을 구현했는데 매우 좋은 로직인 것 같다! c++로 쳤을 때 vector느낌이었다!
해당 문법을 사용할 수 있는 좋은 기회가 된 거 같다!
'코딩테스트 > 백준' 카테고리의 다른 글
[백준 JAVA] 1978 - 소수 찾기 (0) | 2024.12.04 |
---|---|
[백준 JAVA] 9506 - 약수들의 합 (1) | 2024.12.04 |
[백준 JAVA] 5086 - 배수와 약수 (0) | 2024.12.02 |
[백준 JAVA] 2745 - 진법 변환 (0) | 2024.12.02 |
[백준 JAVA] 2903 - 중앙 이동 알고리즘 (0) | 2024.11.30 |