public class Solution {
public int solution(int[] nums) {
int answer = 0;
boolean[] primeArr = new boolean[3000];
for (int i = 0; i < primeArr.length; i++) {
primeArr[i] = true;
}
primeArr[0] = primeArr[1] = false;
for (int i = 2; i < 3000; i++) {
if (primeArr[i]) {
for (int j = i * i; j < 3000; j += i) {
primeArr[j] = false;
}
}
}
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
for (int k = j + 1; k < nums.length; k++) {
int sum = nums[i] + nums[j] + nums[k];
if (primeArr[sum]) {
answer++;
}
}
}
}
return answer;
}
}
3개의 합은 3000을 넘지 않으니 에라토스테네스 체를 이용해서 3000까지의 소수를 구해준다. 파이썬과 달리 자바는 3개의 조합을 직접 루프를 이용해 구해주고 합을 체에 넣어서 소수면 answer에 1씩 더해 개수를 구한다.