본문 바로가기
코딩테스트/파이썬

[프로그래머스] Summer/Winter Coding(~2018) 소수 만들기 (파이썬)

by 커피는아아 2021. 6. 18.
반응형

문제 접근

# Summer/Winter Coding(~2018) 소수 만들기

import math
from itertools import combinations
def solution(nums):
    
    # 에라토스테네스의 체를 이용하여 해당 범위의 소수를 판별한다.
    # 1~1000 사이의 자연수를 3개 고르므로 단순히 합의 최대값을 3000이라고 설정하였다
    n = 3000
    array = [True for i in range(n+1)]
    for i in range(2, int(math.sqrt(n) + 1)):
        if array[i] == True:
            j = 2
            while i * j <= n:
                array[i * j] = False
                j += 1
    
    answer = 0

    # itertools 라이브러리를 사용하여 조합 리스트를 구하고, 그 합의 값이 소수이면 갯수를 체크한다
    for x in combinations(nums,3):
        num = sum(list(x))
        if array[num] == True:
            
            print(num, array[num])
            answer += 1
            
    return answer