어떤 수를 서로 다른 소수 3개의 합으로 표현하는 경우의 수를 구하려 합니다. 예를 들어 33은 총 4가지 방법으로 표현할 수 있습니다.
3+7+23
3+11+19
3+13+17
5+11+17
자연수 n이 매개변수로 주어질 때, n을 서로 다른 소수 3개의 합으로 표현하는 경우의 수를 return 하는 solution 함수를 작성해주세요.
n은 1,000 이하인 자연수입니다.
- combinations를 사용해 n 이하의 소수 3개의 합이 n이 되는지 검사하고 카운트한다.
- 제곱수까지만 탐색하고 소수 판별
from itertools import combinations
def get_primes(n):
primes = []
for i in range(2, n):
for j in range(2, int(i ** 0.5) + 1):
if i % j == 0:
break
else:
primes.append(i)
return primes
def solution(n):
primes = get_primes(n)
return [sum(c) for c in combinations(primes, 3)].count(n)