문제 설명
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.
제한사항- nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
- nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.
입출력 예
nums result
[1,2,3,4] | 1 |
[1,2,7,6,4] | 4 |
나의 코드
class Solution {
public int solution(int[] nums) {
int answer = 0;
for(int i =0; i<nums.length; i++){
for(int j=i+1; j<nums.length; j++){
for(int k = j+1; k<nums.length; k++){
int sum = nums[i]+nums[j]+nums[k];
answer +=Prime(sum) ? 1 : 0;
}
}
}
return answer;
}
boolean Prime(int n){
for(int d = 2; d<=Math.sqrt(n); d++){
if(n%d==0){
return false;
}
}
return true;
}
}
합을 구하기 위해 중첩for문을 사용하였고, 소수 판별을 위해 알고리즘 공부를 하며 배운 에라토스테네스의 체를 사용하여 문제를 해결하였다.
'코딩테스트 연습(with java) > 프로그래머스' 카테고리의 다른 글
프로그래머스<이상한 문자 만들기> (0) | 2022.07.24 |
---|---|
프로그래머스<부족한 금액 계산하기> (수정) (0) | 2022.07.22 |
프로그래머스<두 개 뽑아서 더하기 (0) | 2022.07.17 |
프로그래머스<같은 숫자는 싫어> (0) | 2022.07.04 |
프로그래머스<찾아라 프로그래밍 마에스터 - 포켓몬> (0) | 2022.07.03 |