𝑪𝒐𝒅𝒊𝒏𝒈 𝑻𝒆𝒔𝒕

[프로그래머스] 소수 만들기

기누 2022. 6. 1. 10:25

# 문제

https://programmers.co.kr/learn/courses/30/lessons/12977?language=java 

 

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

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

programmers.co.kr

 

# 자바 풀이

import java.util.ArrayList;
class Solution {
    public int solution(int[] nums) {
       int answer = 0;
	        int len = nums.length;

	       ArrayList<Integer> sum = new ArrayList<Integer>();
	       
	       for (int i = 0; i<len; i++) {
	    	   if (i + 2 >= len) { break; }
	    	   
	    	   for (int j = i + 1; j < len; j++) {
	    		   for (int k = j + 1; k <len; k++) {
	    			   sum.add(nums[i] + nums[j] + nums[k]);
	    		   }
	    	   }
	       }
	      
	       // 소수 판결 
	       for (int i = 0; i < sum.size(); i++) {
	    	   int number = 2;
	    	   
	    	   while(number < sum.get(i)) {
	    		   if (sum.get(i) % number == 0) { // 소수가 아님 
	    			   answer--;
	    			   break;
	    		   }
	    		   number++;
	    	   }
	    	   answer++;
	       }
	        return answer;
    }
}

 

# 한 줄 느낌 

모든 경우의 수를 for 문을 통해서 만들어야 했다. 더 좋은 방법이 있나 고민을 했던 것 같다.. 

소수를 구분하기 위해서 3자리 수를 더한 수를 나눠줘야 한다는 방법도 고민이 컸었다.