문제(출처: https://www.acmicpc.net/problem/9753)
< 짝 곱 >
문제 풀이
미리 100,000까지 소수를 구한다. 서로 다른 소수의 곱을 구해 ArrayList에 저장하여 정렬 후 K보다 크거나 같은 값 중에서 가장 작은 값을 출력한다.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
public class _9753_ { // 짝 곱
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(bf.readLine());
boolean arr[] = new boolean[100001];
for (int i = 2; i <= Math.sqrt(100001); i++) {
if (!arr[i]) {
for (int j = i * i; j < 100001; j += i) {
arr[j] = true;
}
}
}
ArrayList<Integer> result = new ArrayList<>();
for (int i = 2; i < 100001; i++) {
if (arr[i]) {
continue;
}
for (int j = i + 1; j < 100001; j++) {
if (arr[j]) {
continue;
}
if ((long) i * (long) j > 100001) {
break;
}
result.add(i * j);
}
}
Collections.sort(result);
for (int i = 0; i < T; i++) {
int K = Integer.parseInt(bf.readLine());
for (int num : result) {
if (num >= K) {
bw.write(num + "\n");
break;
}
}
}
bw.flush();
}
}
변수)
T : 테스트 케이스의 개수
arr : 소수 판별
result : 서로 다른 소수의 곱을 저장한 ArrayList
테스트 케이스의 개수를 입력받는다. 먼저 2부터 100000까지 소수를 판별한다. 서로 다른 소수의 곱을 구해 ArrayList에 저장한 후 정렬한다. K를 입력받아 ArrayList를 탐색하며 K보다 크거나 같은 수 중에서 가장 작은 값을 출력한다.
'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글
[Baekjoon] 15705_단어 찾기 (1) | 2024.07.25 |
---|---|
[Baekjoon] 8989_시계 (0) | 2024.07.24 |
[Baekjoon] 3231_카드놀이 (0) | 2024.07.22 |
[Baekjoon] 15595_정답 비율 계산하기 (0) | 2024.07.19 |
[Baekjoon] 2817_ALPS식 투표 (0) | 2024.07.18 |