소수 만들기 Lv. 1

박영준·2023년 6월 21일
0

코딩테스트

목록 보기
266/300
class Solution {
    public int solution(int[] nums) {
        int answer = -1;

        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        System.out.println("Hello Java");

        return answer;
    }
}

해결법

방법 1

import java.util.Arrays;

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++) {
                    if (isPrime(nums[i] + nums[j] + nums[k])) {
                        answer++;  
                    } 
                }
            }
        }
        
        return answer;
    }
    
    // 소수 판별
    public Boolean isPrime(int num) {
        int cnt = 0;
        
        for (int i = 1; i <= (int)Math.sqrt(num); i++) {
            if (num % i == 0) {
                cnt++;
            }    
        }
        
        return cnt == 1;
    }
}

나의 풀이

class Solution {
    public int solution(int[] nums) {

        // 1 + 2 + 3 = 6 이 가장 최솟값
        // 덧셈은 2번 이뤄져야함
        
        int plusCnt = 0;
        int sum = 0;
        int primeCnt1 = 0;
        int primeCnt2 = 0;
        
        while (plusCnt <= 3) {
            for (int i : nums) {
                sum += i;
                plusCnt++;
                
                if (plusCnt == 3) {
                    for (int j = 6; j <= sum; j++) {
                        if (sum % j == 0) {
                            primeCnt1++;
                            
                            if (primeCnt1 == 1) {
                                primeCnt2++;
                            }
                        }
                    }   
                }
            }
        }

        return primeCnt2;
    }
}
  • 어딘가에서 틀렸다고 나온다.
    시간 나면 다시 수정해봐야겠다.

소수 만들기 Lv. 1

profile
개발자로 거듭나기!

0개의 댓글