Algorithm/Java

프로그래머스 - 소수 만들기 java :: Summer/Winter Coding(~2018) :: 12977

고고마코드 2022. 7. 6. 12:30
반응형

문제 링크

코딩테스트 연습 - 소수 만들기 | 프로그래머스 스쿨 (programmers.co.kr)


문제 풀이

코드-1

class Solution {
    public int solution(int[] nums) {
        int cnt = 0;
        for(int i=0; i<nums.length - 2; i++) {
            for(int j=i+1; j<nums.length - 1; j++) {
                for(int k=j+1; k<nums.length; k++) {
                    if(isPrime(nums[i] + nums[j] + nums[k])) {
                        cnt++;
                    }
                }
            }
        }

        return cnt;
    }

    public boolean isPrime(int num) {
        boolean isPrime = true;
        for(int i=2; i<=(int)Math.sqrt(num); i++) {
            if(num % i == 0) {
                isPrime = false;
                break;
            }
        }
        return isPrime;
    }
}

배열에서 3개의 요소를 순서대로 꺼내 더한 후 소수인지 아닌지를 판별해야 합니다.
소수 판별을 해주는 isPrime 메소드를 하나 만들었습니다.

소수인지 아닌지 판별하는 기준은 1이 아닌 약수가 있는지 확인하면 됩니다.
1이 아닌 약수가 있으면 소수가 아닙니다.

그리고 약수 판별 반복문을 수행할 때 약수는 반드시 짝이 있으므로 제곱근까지만 순회하면 돼요.
만약 잘 이해가 안 되면 아래 글을 참고해 주세요.
프로그래머스 - 약수의 개수와 덧셈 java :: 월간 코드 챌린지 시즌2

테스트 케이스 처리속도

🔥 평균 0.06ms / 최대 2.11ms


반응형