본문 바로가기

프로그래머스/level1

[프로그래머스/JAVA] 소수 만들기

문제 설명

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.

제한사항

  • nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
  • nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.

나의 풀이

class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        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++){
                    if(prime(nums[i],nums[j],nums[k])==1){
                        answer++;
                    }
                }
            }
        }
        return answer;
    }
    public int prime(int x,int y,int z){
        int w=x+y+z;
        int result=0;
        for(int l=1;l<=w;l++){
            if(w%l==0){
                result++;
            }
        }
        if(result==2){
            return 1;
        }
        return 0;
    }
}

for문 3개를 활용하여 경우의 수를 구하고, 3개의 숫자를 합하고 그 숫자가 소수인지 검사하는 prime함수를 활용한다. 활용한 값을 통해 answer값을 구한다.