본문 바로가기

코테

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

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

 

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

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

programmers.co.kr

from itertools import combinations
def solution(nums):
    nums.sort()
    m = nums[-1] + nums[-2] + nums[-3]
    
    Erathos = [False, False] + [True]*m
    for i in range(2,m+1) :
        if Erathos[i] : 
            for j in range(2*i, m+1, i) : Erathos[j] = False
    
    case = list(combinations(nums, 3))
    answer = 0
    for i in case :
        if Erathos[i[0]+i[1]+i[2]] == True : answer += 1
    return answer
        
    

정확성 테스트

테스트 1 통과 (1.00ms, 10.3MB)
테스트 2 통과 (1.30ms, 10.4MB)
테스트 3 통과 (0.29ms, 10.2MB)
테스트 4 통과 (0.26ms, 10.2MB)
테스트 5 통과 (1.31ms, 10.4MB)
테스트 6 통과 (2.09ms, 10.4MB)
테스트 7 통과 (0.32ms, 10.3MB)
테스트 8 통과 (4.13ms, 11.1MB)
테스트 9 통과 (0.63ms, 10.2MB)
테스트 10 통과 (4.22ms, 11MB)
테스트 11 통과 (0.06ms, 10.3MB)
테스트 12 통과 (0.04ms, 10.2MB)
테스트 13 통과 (0.06ms, 10.2MB)
테스트 14 통과 (0.04ms, 10.3MB)
테스트 15 통과 (0.04ms, 10.3MB)
테스트 16 통과 (4.11ms, 11.1MB)
테스트 17 통과 (5.47ms, 11.3MB)
테스트 18 통과 (0.82ms, 10.3MB)
테스트 19 통과 (0.82ms, 10.2MB)
테스트 20 통과 (5.22ms, 11.3MB)
테스트 21 통과 (5.26ms, 11.3MB)
테스트 22 통과 (1.52ms, 10.3MB)
테스트 23 통과 (0.01ms, 10.3MB)
테스트 24 통과 (14.80ms, 11MB)
테스트 25 통과 (4.65ms, 11.1MB)
테스트 26 통과 (0.01ms, 10.2MB)

채점 결과

정확성: 100.0

합계: 100.0 / 100.0