코린이의 소소한 공부노트

[프로그래머스/Lv.1] 소수 만들기 본문

코딩테스트 풀이/JAVA

[프로그래머스/Lv.1] 소수 만들기

무지맘 2022. 11. 22. 14:45

1. Input

1) 숫자들이 들어있는 배열 nums

 

2. Output

1) nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 수

2) 소수는 약수의 개수가 2개인 자연수

 

3. Constraint

1) nums에 들어있는 숫자의 개수는 3개 이상 50개 이하

2) nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않다.

 

4. Example

Input: nums={1,2,7,6,4} -> Output: 4

설명:

1 + 2 + 4 = 7

1 + 4 + 6 = 11

2 + 4 + 7 = 13

4 + 6 + 7 = 17

나머지 경우는 모두 소수가 아니다.

 

5. Code

1) 첫 코드(2022/??)

int answer = 0;
int sum = 0;

// nums[i] + nums[j] + nums[k] = prime number?
for(int i=0 ; i<nums.length-2 ; i++) {
    sum = nums[i];
    for(int j=i+1 ; j<nums.length-1 ; j++) {
        sum += nums[j];
        for(int k=j+1 ; k<nums.length ; k++) {
            sum += nums[k];
            if(isPrime(sum)) answer++;
            sum -= nums[k];
        } // for k
        sum -= nums[j];
    } // for j 
    sum -= nums[i];
} // for i
return answer;

// 소수 판별 메서드
static boolean isPrime(int n) {
for(int i=2 ; i<n ; i++) {
    if(n%i == 0) return false;
}
return true;