프로그래머스 소수 구하기

최준호·2021년 7월 14일
0

algorithm

목록 보기
8/39

문제

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

제한 사항

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

입출력 예

풀이

public class PrimeNumber {
    public static void main(String[] args) {
        PrimeNumber primeNumber = new PrimeNumber();
        int[] nums = {1,2,7,6,4};
        int solution = primeNumber.solution(nums);
        System.out.println("solution = " + solution);
    }
    public int solution(int[] nums) {
        int answer = 0;
        //3개의 수를 더해서 사용
        int leng = nums.length;
        for(int i=0; i<leng-2; i++){
            for(int j=i+1; j<leng-1; j++){
                for(int h=j+1; h<leng; h++){
                    int a = nums[i];
                    int b = nums[j];
                    int c = nums[h];

                    int sum = a+b+c;

                    boolean flag = true;
                    for(int z=2; z<sum; z++){
                        if(sum%z == 0){
                            flag = false;
                        }
                    }
                    if(flag){
                        answer++;
                    }
                }
            }
        }
        return answer;
    }
}

ㄹㅇ 무지성 4중 for문이다... 소수를 구하는 부분이라도 method로 뺄걸 그랬나 ㅎㅎ... 일단 풀고 다른 사람들 풀이 보면서 공부하려고 했는데 다들 이렇게 풀더라... 패스

0개의 댓글

관련 채용 정보