https://programmers.co.kr/learn/courses/30/lessons/12977

 

코딩테스트 연습 - 소수 만들기

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때

programmers.co.kr

 

 

문제 분석

- 주어진 숫자 중 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++;
    }
    
}

 

 

https://github.com/SOEUN2/Algorithm

'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