다희의 코딩 성장일기

[프로그래머스] level1. 소수 만들기 (자바 JAVA) 본문

Algorithm/프로그래머스

[프로그래머스] level1. 소수 만들기 (자바 JAVA)

ilmiodiario 2021. 8. 25. 11:23

[ 문제 ]  [프로그래머스] level1. 소수 만들기 (자바 JAVA)

 

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12977

 

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

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

programmers.co.kr


# 접근 방법 및 풀이 

 

  • nums배열에 있는 숫자중 서로 다른 3개의 숫자를 뽑으므로 조합을 이용해서 풀었다.
  • 조합으로 3개의 숫자를 뽑고, 숫자들을 더해 그 숫자가 소수인지 개수를 세면 되는 문제.
  • 자세한건 코드참조

# 주의할 점 

 

  • 딱히 없음

 

JAVA 코드
import java.util.*;
class Solution {
    static int sel[], ans =0;
    public int solution(int[] nums) {
        sel = new int [3];
        comb(0, 0, nums);
        return ans;
    }
    public static void comb (int idx, int s_idx, int[] nums){
        if(s_idx == 3){
            int num = 0;
            for(int i = 0; i < sel.length; i++){
                num += sel[i];
            }
            if(check(num)){
                ans++;
            }
            return;
        }
        if(idx == nums.length)
            return;
        sel[s_idx] = nums[idx];
        comb(idx+1, s_idx+1, nums);
        comb(idx+1, s_idx, nums);
    }
    public static boolean check(int num){
        if(num == 1)
            return false;
        for(int i = 2; i <= Math.sqrt(num); i++){
            if(num%i == 0)
                return false;
        }
        return true;
    } 
    
}

 

 

 

REVIEW

 

Comments