알고리즘/프로그래머스

[파이썬] 프로그래머스_소수 만들기

딱따구르리 2022. 2. 9. 18:32
728x90
반응형

문제

https://programmers.co.kr/learn/courses/30/lessons/12977

 

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

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

programmers.co.kr


 

해설

 

이 문제는 주어진 숫자 중 3개의 수를 더해서 소수가 되는 경우의 개수를 구하는 문제이다.

그럼 소수인지를 구하는 함수를 따로 만들어두면 코드를 보기 좀 더 편할 것이다.

 

isPrime 함수에서 해당 수가 2 ~ num까지 나누기를 했을 때

나누어지는 수가 있는지 찾아 소수인지 아닌지 판단한다.

 

밑의 solution 에선 combinations 함수를 통해

설정한 개수인 3개의 수로 중복을 허용하지 않고 조합을 만든다. 

이를 통해 생성한 리스트에서 세 수의 합을 구하고 

그 합을 isPrime을 통해 소수인지 아닌지 판단한다.

 

소수인 True 값이 반환됐다면 answer 개수를 +1 해주면 된다.

 


코드

 

-파이썬

from itertools import combinations

#소수인지 판단
def isPrime(num):
    for i in range(2, num):
        if num % i == 0:
            return False
    return True

def solution(nums):
    answer = 0
    arr = list(combinations(nums, 3))
    
    for i in arr:
        sum = i[0] + i[1] + i[2]
        if isPrime(sum):
            answer += 1

    return answer
728x90
반응형