본문 바로가기
Engineering WIKI/Programmers

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

by wonos 2022. 4. 1.
 

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

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

programmers.co.kr

내 풀이

import math
from itertools import combinations

def is_prime(sum_num):
    # 2부터 sum_num의 제곱근까지의 모든 수를 확인
    for i in range(2, int(math.sqrt(sum_num)) + 1):
        # sum_num이 해당 수로 나뉘어지면
        if sum_num % i == 0:
            return False
    return True

def solution(nums):
    
    list_num = list(combinations(nums, 3))
    
    prime_list = []
    for i in list_num:
        if is_prime(sum(i)):
            prime_list.append(sum(i))
        

    return len(prime_list)

 

다른 방법

def solution(nums):
    from itertools import combinations as cb
    answer = 0
    for a in cb(nums, 3):
        cand = sum(a)
        for j in range(2, cand):
            if cand%j==0:
                break
        else:
            answer += 1
    return answer