Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Tags more
Archives
Today
Total
관리 메뉴

luke

[프로그래머스] - 소수 만들기 (Java/자바) 본문

알고리즘문제/프로그래머스(Java)

[프로그래머스] - 소수 만들기 (Java/자바)

luke-king 2025. 11. 30. 16:20

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        
        for(int i = 0; i < nums.length; i++){
            for(int j = i + 1; j < nums.length; j ++){
                for(int k = j + 1; k < nums.length; k++){
                    int sum = nums[i] + nums[j] + nums[k];
                    if(is_prime(sum)){
                        answer++;
                    }
                }
            }
        }

        return answer;
    }
    
    public boolean is_prime(int sum){
        if(sum == 2) return true;
        
        for(int i = 2; i <= (int)Math.sqrt(sum); i++){
            if(sum % i == 0){
                return false;
            }
        }
        
        return true;
    }
    
}

이번 문제는 프로그래머스 "소수 만들기" 문제다.

문제 접근은 nums[] 에 있는 인덱스 3개의 값들 합이 소수일 경우가 몇 번인지 카운트하는 문제다.

그럼 바로 풀이 해보겠다.

 

1. 우선 중복되지 않게 nums[]에 있는 인덱스 값들을 3개 합을 구하기 위해 3중 for문을 생성해준다.

첫 번째 for문은 0번 인덱스부터 시작하기에 i = 0, 두번째 for문은 1번 인덱스 부터 시작 하기에 j = i + 1,

세 번째 for문은 2번 인덱스부터 시작하기에 k = j + 1을 해준다. 

 

2. 마지막 for문에서 각 인덱스 값들을 합쳐 합을 구해준다.

 

3. 합을 구해 줬다면 이제 소수를 판별하는 메서드를 만들어 준다. boolean 타입의 메서드를 생성해 준다.

 

4. 매개변수는 int 형태이고 입력된 매개변수를 2와 같다면 return ture를 해준다. 2는 가장 작은 소수이고 시작이기 때문이다.

 

5. 다음으로 for문을 생성해 2부터 시작하며(가장 작은 소수) 매개변숫값을 Math.sqrt()를 사용해 제곱근으로 만들어 반복해준다.

 

6. 조건식으로는 매개변숫값을 i로 나눴을 때 나머지가 0이라면 소수가 아니므로 return false로 해준다.

 

7. for문을 전부 통과했다면 소수 이므로 return true이며 main에 있는 3번째 for문에 조건식을 사용해 is_prime의 메서드가 true 이면 answer++ 증가시켜서 카운트해주면 끝이다.