알고리즘/프로그래머스

[프로그래머스] 소수 만들기 for Python

정석이 2022. 3. 19. 16:52

 

https://programmers.co.kr/learn/courses/30/lessons/12977?language=python3 

 

코딩테스트 연습 - 소수 만들기

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때

programmers.co.kr

 

 

 

문제

 

 


 

입력 nums 중에 3개를 순서없이 뽑아내야 하므로 조합을 사용해야 한다.

 

 

파이썬 내장 함수를 사용할 수 있음

 

 

 

from itertools import combinations

combinations(arr, 3)
 
 
 

이렇게 사용하면 된다.

 

 

그리고 소수인지 판별하는 방법은 

 

import math  

def is_prime_number(x): 

       for i in range(2, int(math.sqrt(x)) + 1): # 2부터 x의 제곱근까지 확인 (에라토스테네스의 체)

                if x % i == 0:   # x가 어떤 수와 나누어떨어지면

                         return False # 소수X

       return True # 소수O

 

 

 

일케 판별하는 함수를 만들었다.

 

 

 

from itertools import combinations
import math

def solution(nums):
    answer = 0
    
    def is_prime_number(x):
        for i in range(2, int(math.sqrt(x)) + 1):
            if x % i == 0:
                return False # 소수x
        return True  # 소수O

    for i in combinations(nums, 3):
        if is_prime_number(sum(i)):
            answer+=1


    return answer

 

 

 

파이썬 함수를 사용했는데 함수를 안쓰는 법도 공부해야겠다.