https://school.programmers.co.kr/learn/courses/30/lessons/12977
import java.util.ArrayList;
class Solution {
public int solution(int[] nums) {
ArrayList<Integer> list = new ArrayList<>(); // 소수 담아줄 리스트
// 1. 뽑기
for (int i = 0; i < nums.length - 2; i++) {
for (int j = i + 1; j < nums.length - 1; j++) {
for (int k = j + 1; k < nums.length; k++) {
int temp = nums[i] + nums[j] + nums[k];
if (temp % 2 != 0)
list.add(temp);
}
}
}
// 2. 소수 판별
int answer = list.size();
for (int n : list) {
for (int i = 3; i < n; i += 2) {
if (n % i == 0) {
answer --;
break;
}
}
}
return answer;
}
}
import java.util.Arrays;
class Solution {
public int solution(int[] nums) {
int ans = 0;
for(int i = 0; i < nums.length - 2; i ++){
for(int j = i + 1; j < nums.length - 1; j ++){
for(int k = j + 1; k < nums.length; k ++ ){
if(isPrime(nums[i] + nums[j] + nums[k])){
ans += 1;
}
}
}
}
return ans;
}
public Boolean isPrime(int num){
int cnt = 0;
for(int i = 1; i <= (int)Math.sqrt(num); i ++){
if(num % i == 0) cnt += 1;
}
return cnt == 1;
}
}
3가지 수 뽑는 방법하고 소수 판별 부분을 알아둬야 쉽게 풀 수 있다.
소수 판별 알고리즘 잘 기억해두자.
근데 이거 레벨 1 맞냐 왤케어렵니..
소수 판별 알고리즘 참고 : https://st-lab.tistory.com/81