본문 바로가기
알고리즘 & 자료구조/프로그래머스

소수 만들기

by 신재권 2022. 11. 4.
package programmers;

import java.util.Arrays;

public class 소수만들기 {

   private static boolean[] isPrime;

   public static void findPrime(int n) {
      isPrime = new boolean[n + 1];
      Arrays.fill(isPrime, true);

      for (int i = 2; i <= Math.sqrt(n); i++) {
         if (isPrime[i]) {
            for (int j = i * i; j <= n; j += i) {
               isPrime[j] = false;
            }
         }
      }
   }

   public static int solution(int[] nums) {
      findPrime(3000);
      int cnt = 0;
      for (int i = 0; i < nums.length - 2; i++) {
         for (int j = i + 1; j < nums.length - 1; j++) {
            if (i == j)
               continue;
            for (int k = j + 1; k < nums.length; k++) {
               if (i == k || j == k)
                  continue;
               int sum = nums[i] + nums[j] + nums[k];
               if (isPrime[sum]) {
                  cnt++;
               }
            }
         }
      }
      return cnt;
   }

   public static void main(String[] args) {
      System.out.println(solution(new int[] {1, 2, 3, 4}));
      System.out.println(solution(new int[] {1, 2, 7, 6, 4}));
   }
}

'알고리즘 & 자료구조 > 프로그래머스' 카테고리의 다른 글

다트 게임  (0) 2022.11.08
실패율  (0) 2022.11.06
소수찾기  (0) 2022.11.02
모의고사  (0) 2022.11.01
폰켓몬  (0) 2022.11.01