문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/12977

제한 사항

입출력 예

풀이
class Solution {
public int solution(int[] nums) {
int answer = 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++)
answer += isPrime(nums[i] + nums[j] + nums[k]);
return answer;
}
public int isPrime(int num) {
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) return 0;
}
return 1;
}
}
후기
소수를 판별할 수 있는 방법을 잘 찾으면 쉽게 풀 수 있다. 찾고자 하는 수의 양의 제곱근을 구해서 그 수보다 같거나 작은 수들로 나누어 떨어지는지 확인해보면 된다. 그런데 소수는 어차피 1과 자신만을 약수로 가지니까 제곱근한 수의 약수가 1개만 나오면 소수임을 알 수 있다. 그런데 나는 isPrime() 메서드 안에서 2부터 시작했다. 1은 무조건 가지고 있는 약수이므로 제외 시켰기 때문이다. 그럼 이제 제곱근 num의 약수의 개수가 0이어야 num의 약수가 2개임을 알 수 있다.
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
| [프로그래머스][JAVA][Lv. 1] x만큼 간격이 있는 n개의 숫자 (0) | 2023.07.24 |
|---|---|
| [프로그래머스][JAVA][Lv. 1] 직사각형 별찍기 (0) | 2023.07.23 |
| [프로그래머스][JAVA][Lv. 1] 예산 (0) | 2023.07.23 |
| [프로그래머스][JAVA][Lv. 1] [1차] 비밀지도 (0) | 2023.07.22 |
| [프로그래머스][JAVA][Lv. 1] [1차] 다트 게임 (0) | 2023.07.22 |