반응형
17103번 - 골드바흐 파티션
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
boolean[] primeNum = new boolean[1000001]; // false는 소수, true는 소수가아님
primeNum[0] = primeNum[1] = true;
for (int i = 2; i < primeNum.length; i++) { // 미리 골드바흐의 추측에 따른 소수값 구하기
if (primeNum[i] == false) {
for (int j = 2; i * j < primeNum.length; j++) {
primeNum[i * j] = true;
}
}
}
for (int testCase = 0; testCase < T; testCase++) {
int N = Integer.parseInt(br.readLine());
int partitionCount = 0;
for (int idx = 2; idx <= N / 2; idx++) {
if (primeNum[idx] == false) { // 소수일 때
if (primeNum[N - idx] == false) { // N- 소수 = 소수일때
partitionCount++;
}
}
}
bw.write(partitionCount + "\n");
}
bw.flush();
bw.close();
}
}
정답을 맞춘 풀이방법
1 . 100만까지의 수에 대한 소수 판별을 boolean 배열에 true, false로 구분해 놓음
2. 입력된 수 N에 대해 N/2까지 소수값을 구하면서 구한 소수값 + N - 소수값 = 소수값이면 골드바흐의 파티션 임을 판별함
3. 파티션의 개수 입력 후 출력
반응형
'알고리즘 > 백준 문제[추후 옮길예정]' 카테고리의 다른 글
[JAVA] 백준 2745번 (0) | 2021.05.18 |
---|---|
[JAVA] 백준 11005번 (0) | 2021.05.18 |
[JAVA] 백준 2089번 (0) | 2021.05.18 |
[JAVA] 백준 1373번 (0) | 2021.05.17 |
[JAVA] 백준 17087번 (0) | 2021.05.17 |