Algorithm/PROGRAMMERS[Java]

Lv1. 소수 만들기

씨니 2022. 4. 24. 21:22
728x90

▶ 문제

 

▶ 풀이방법

import java.util.*;
class Solution {
    public int solution(int[] nums) {
        int answer = 0;

		//에라토스테네스의 체 사용.(소수판별공식 사용)
        boolean[] arr = new boolean[3000];
		Arrays.fill(arr, false);
		for(int i = 2; i < 3000; i++){
            for(int j = i*2; j < 3000; j+=i){
                if(arr[j] == true) continue;
                arr[j] = true; //소수가 아니면 true, 소수이면 false
            }
        }
        
        Arrays.sort(nums);
        
        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 num = nums[i] + nums[j] + nums[k];
                    if(!arr[num]) answer++;
                }
            }
        }
        return answer;
    }
}
728x90