프로그래머스 - 소수 만들기(java)

응큼한포도·2023년 11월 4일
0

코딩테스트

목록 보기
7/31
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씩 더해 개수를 구한다.

profile
미친 취준생

0개의 댓글