프로그래머스 소수 구하기

최준호·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로 뺄걸 그랬나 ㅎㅎ... 일단 풀고 다른 사람들 풀이 보면서 공부하려고 했는데 다들 이렇게 풀더라... 패스

profile
코딩을 깔끔하게 하고 싶어하는 초보 개발자 (편하게 글을 쓰기위해 반말체를 사용하고 있습니다! 양해 부탁드려요!) 현재 KakaoVX 근무중입니다!

0개의 댓글