https://programmers.co.kr/learn/courses/30/lessons/12977
문제 분석
- 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우를 구한다.
- 3개의 수를 뽑는 경우를 구하기 위해 조합을 이용한다.
- 3개의 수를 뽑고 해당 숫자를 더했을 경우 소수인 경우를 처리(checkPrime)한다.
문제 풀이
1. 조합을 통해 3개의 숫자를 뽑는다.
2. 뽑은 숫자는 더하여 checkPrime함수를 통해 소수인지 판단한다.
3. 소수인 경우 정답에 추가한다.
import java.util.*;
class Solution {
static int answer;
static int[] pick;
public int solution(int[] nums) {
answer = 0;
pick = new int[3];
combination(0, 0, nums);
return answer;
}
static void combination(int cnt, int start, int[] nums){
if (cnt == 3){
int num = 0;
for(int i=0;i<pick.length;i++){
num += pick[i];
}
checkPrime(num);
return;
}
for(int i=start; i<nums.length;i++){
pick[cnt] = nums[i];
combination(cnt+1, i+1, nums);
}
}
static void checkPrime(int num){
for(int i=2;i<num;i++){
if(num%i==0){
return;
}
}
answer++;
}
}
'Algorithm > programmers' 카테고리의 다른 글
programmers 음양 더하기 (0) | 2022.03.20 |
---|---|
programmers 내적 (0) | 2022.03.20 |
programmers 완주하지 못한 선수 (0) | 2022.03.13 |
programmers K번째수 (0) | 2022.03.13 |
programmers 모의고사 (0) | 2022.03.13 |