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

Jin Lee·2022년 4월 29일
0

프로그래머스 Lv.1

목록 보기
25/32
post-thumbnail

문제 링크

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

소수를 먼저 구해놓고 3가지 수의 합의 모든 경우를 구해서 소수인지를 확인한다.
nums 배열의 원소의 최댓값은 1000이고 3개를 합한 숫자를 소수인지 판정하기 때문에 3000까지 소수를 구해놓고 사용하면 된다.
nums 배열의 원소들은 1이상의 값을 가지기 때문에 최소 3이상의 값이 소수인지 판정하게 된다. 따라서 primes[0], primes[1]에 대한 처리를 안했어도 통과 된다.(주석처리 한 다음 제출 해봄)

def solution(nums):
    primes = [True] * 3001
    primes[0] = False
    primes[1] = False
    
    answer = 0
    
    for i in range(2, 3001):
        if primes[i]:
            for j in range(i, 3000 // i + 1):
                primes[i * j] = False
                
    length = len(nums)
    
    for i in range(length):
        for j in range(i + 1, length):
            for k in range(j + 1, length):
                if primes[nums[i] + nums[j] + nums[k]]:
                    answer = answer + 1
    return answer
profile
깃허브 : https://github.com/jinlee9270

0개의 댓글