안녕하세요 !

 

9월 부터 연말까지 바빠져서

지금 시간이 조금 나서 올리게 되었습니다!

 

이번에도 ~ Programmers 문제 입니다.

 

저번에는 소수를 찾는 거였다면

이번 포스팅은 소수를 만드는 거에요.

 

저번 포스팅들과 마찬가지로 문제는 Programmers에 있으니 직접 검색해 보세요 ~!

 

이번에도 기록용 입니다

별다른 풀이는 하지 않을게요!

 

1. Solved with Java

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.util.Arrays;
import java.lang.Math;
 
class Solution {
    private static int answer = 0;
    
    public int solution(int[] nums) {
        int[] comArr = new int[3];
        combination(comArr, nums.length300, nums);
 
        return answer;
    }
    
    private static void combination(int[] comArr, int n, int r,
                                   int index, int target, int[] nums){
        if (r==0){
            if(checkPrime(Arrays.stream(comArr).sum())){
                answer++;
            }
            return;
        }
        if(target==n) return;
        
        comArr[index] = nums[target];
        combination(comArr, n, r-1, index+1, target+1, nums);
        combination(comArr, n, r, index, target+1, nums);
    }
    
    private static boolean checkPrime(int check) {
        int count=0;
        double checkSqrt = Math.sqrt(check);
        double checkZero = checkSqrt - (int)checkSqrt;
        if(checkZero!=0.0) {
            for(int i=1; i<(int)checkSqrt+1; i++) {
                if(check%i==0) {
                    count++;
                }
            }
            count++;
        }
        if(count==2) {
            return true;
        } else {
            return false;
        }
    }
}
cs

 

 

 

2. Solved with Python3 (Python2 버전은 Programmers에서 해당 문제에서는 풀이 언어로 선택 할 수 없어서 3버전만 작성 합니다)

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from itertools import combinations
from math import sqrt
 
def solution(nums):
    return solve(nums)
 
def solve(combLi):
    primeCount = 0
    for i in combiList(combLi):
        if primeCheck(sum(i)):
            primeCount+=1
        else:
            pass
    
    return primeCount
 
def primeCheck(num):
    numSqrt = sqrt(num)
    checkSqrt = int(numSqrt)+1
    checkZero = numSqrt - int(numSqrt)
    count = 0
    if sqrtCheck(checkZero):
        for i in range(1, checkSqrt):
            if(num%i==0):
                count+=1
            else:
                pass
        count+=1
        if count==2:
            return True
        else:
            return False
    else:
        return False
 
def combiList(nums):
    return list(combinations(nums, 3))
 
def sqrtCheck(checkZero):
    if checkZero!=0.0:
        return True
    else:
        return False
cs

 

 

 

 

 

위 코드의 결과는 직접 확인해 보세요 ~!

 

 

 

 

 

 

+ Recent posts