본문 바로가기
Otter's [ 개발새발 ]/# 코딩테스트 - Programmers

[Programmers 코딩테스트 연습_Lv1_Python] 소수만들기

by byeonPig 2022. 6. 11.

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

 

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

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

programmers.co.kr

 

[ 문제 ]

 

[ 나의 귀여운 풀이 ]

from itertools import combinations

def eratosthenes_sieve(size):
    aristo = [True] * size
    aristo[0] = False
    aristo[1] = False
    end = int(size ** 0.5)

    for i in range(2, end+1):
        if aristo[i]:
            for j in range(i + i, size, i):
                aristo[j] = False

    return aristo

def solution(nums):
    prime = aristo_sieve(3001)
    combi = list(combinations(nums, 3))
    answer = 0
    for i in range(len(combi)):
        if prime[sum(combi[i])]:
            answer +=1
    return answer

 

[ 배운 것 ]

 

1. 에라토스테네스의 체(Eratosthenes Seive): https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes

 

[ 개인적인 만족도 ]

(수달 1~5마리)

수달: 3마리!

 

꾸준히 열심히!