import java.util.*;
class Solution {
//같은 결과 여러가지 방법 중복허용
public int solution(int[] nums) {
int answer = -1;
ArrayList<Integer> n = new ArrayList<>();
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++){
n.add(nums[i]+nums[j]+nums[k]);
//System.out.print(nums[i]+nums[j]+nums[k]+" ");
}
}
}
//n[i]가 소수인지 판별
int cnt = 0;
for(int i=0;i<n.size();i++){
boolean flag = true;
for(int j=2;j<=Math.sqrt(n.get(i));j++){
if(n.get(i)%j==0) flag = false;
}
if(flag == true) cnt++;
}
answer = cnt;
return answer;
}
}
세 수를 더한값을 새로운 배열에 추가하려고 할 때 배열크기를 몇으로 정할 지 아래의 공식을 찾아보는 등 고민을 하다가..
배열크기를 정하지 않는 list를 이용 하였다.
1/( (n-m)! * m! )
다른사람은 배열을 만들 지 않고 메소드를 만들어서 이용하였는데 신박.
class Solution {
public int solution(int[] nums) {
int ans = 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])){
ans += 1;
}
}
}
}
return ans;
}
public Boolean isPrime(int num){
int cnt = 0;
for(int i = 1; i <= (int)Math.sqrt(num); i ++){
if(num % i == 0) cnt += 1;
}
return cnt == 1;
}
}