본문 바로가기

프로그래머스/JAVA

004. 소수 만들기[JAVA]

0. 사용 함수

  • 없음

 

1. 문제 내용

  • 설명

주어지는 숫자 배열에서 숫자 3개를 뽑아,

그 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하는 문제

 

 

 

  • 제한 사항

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

 

 

2. 문제 풀이

class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        for(int i=nums.length-1; i>=2; i--){
            for(int j=i-1; j >= 1; j--){
                for(int l=j-1; l >= 0; l--){
                    if(isPrime(nums[i]+nums[j]+nums[l])){
                        answer++;
                    }
                }
            }
        }
        return answer;
    }
    public static boolean isPrime(int num) {
        for (int i = 2; i <= num/2; i++) {
            if (num % i == 0) return false;
        }
        return true;
    }
}
 
 

3. 채점 결과

  • 정확성 테스트
테스트 1 통과 (0.40ms, 75.7MB)
테스트 2 통과 (0.62ms, 77.9MB)
테스트 3 통과 (0.17ms, 76.3MB)
테스트 4 통과 (0.14ms, 77.6MB)
테스트 5 통과 (0.74ms, 74MB)
테스트 6 통과 (2.43ms, 79.5MB)
테스트 7 통과 (0.19ms, 76.4MB)
테스트 8 통과 (3.11ms, 73.5MB)
테스트 9 통과 (0.53ms, 76.7MB)
테스트 10 통과 (2.72ms, 74.4MB)
테스트 11 통과 (0.04ms, 75.2MB)
테스트 12 통과 (0.03ms, 76.7MB)
테스트 13 통과 (0.04ms, 73MB)
테스트 14 통과 (0.04ms, 75.4MB)
테스트 15 통과 (0.03ms, 67.1MB)
테스트 16 통과 (5.92ms, 78.6MB)
테스트 17 통과 (1.01ms, 76.3MB)
테스트 18 통과 (0.27ms, 75.8MB)
테스트 19 통과 (0.06ms, 76.5MB)
테스트 20 통과 (7.38ms, 73.5MB)
테스트 21 통과 (6.77ms, 73.9MB)
테스트 22 통과 (0.33ms, 77.3MB)
테스트 23 통과 (0.02ms, 72.1MB)
테스트 24 통과 (6.00ms, 75.7MB)
테스트 25 통과 (6.20ms, 76.4MB)
테스트 26 통과 (0.02ms, 74.9MB)

 


 

소수인지 판별하는 식은 그냥 검색해봤다..ㅎㅎ

소수 구할 때 어차피 곱하는 수의 짝이 존재하기 때문에

(예를 들어 20이라 가정하면 1*20 , 2*10, 4*5 이런 식으로 1의 짝은 20)

2로 나누어 소수인지 판별하면 된다고 한다

싱기방기,,

 

위에 for문은 일단 3개만 뽑아야 하니 for문 3개랑

내부에 식은 고등학교 때인가 배웠던 조합생각하며 풀었다..

이게 1단계인데 2단계는 더 어렵겠지,,

'프로그래머스 > JAVA' 카테고리의 다른 글

008. 폰켓몬[JAVA]  (0) 2022.05.22
007. 체육복[JAVA]  (0) 2022.05.21
006. 모의고사[JAVA]  (0) 2021.12.30
002. [카카오 인턴] 키패드 누르기[JAVA]  (0) 2021.12.18
001. 로또의 최고 순위와 최저 순위[JAVA]  (0) 2021.12.13