본문 바로가기

프로그래머스/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;
    }
}

1. for문을 통해서 배열의 합을 구한다.

2. 소수인지 확인하는 prime 함수를 통해서 약수가 확인되면 result를 1증가시킨다. 

3. prime함수의 if문을 통해서 result==2이면 소수이므로 1을 리턴하고 아니면 0을 리턴한다.

4. if문안에 prime함수를 실행시킨다. 1이 나오면 answer값을 1증가시킨다.