소수 만들기(java)

최준근·2022년 1월 5일
0

java알고리즘

목록 보기
44/63

문제 설명

생각하기

  1. 각 다른 3개의 숫자를 더하기
  2. 반복문으로 진행
  3. 함수형 프로그래밍 연습하기

내 풀이

class Solution {
    public int solution(int[] nums) {
        int ans = 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 num =  nums[i]+nums[j]+nums[k];
                    boolean chk = sosu(num);
                    
                    if(chk ==true) ans++;
                }
            }
        }
        
        return ans;
    }
    
    public boolean sosu(int num){
        boolean check = true;
        for( int i=2; i<num/2+1; i++){
            if(num % i ==0) {
                check = false;
                break;
            }
        }
        return check;
    }
}

3개의 숫자를 i,j,k로 만들어준다. num에 i+j+k값을 넣고 sosu(num)함수를 부른다.
sosu함수에서 check값을 true로 주고 num이 소수인지 판별하는 반복문을 돌린다.
만약 num % i가 0이면 소수가 아니기 때문에 false를 주고 반복문종료 후 리턴한다.
if문에 걸리지 않는다면 check에 true를 담아 리턴한다.
돌아가서 chk에 값이 담기고 그 값이 true 즉, 소수라면 ans++로 개수를세어준다.

sosu함수 안에 num/2+1는 약수 중 제일 작은 값이 자신의 절반값이기 때문이다.

profile
느려도 좋으니 꾸준하게

0개의 댓글