0) 문제 유형 파악: 완전 탐색 문제
1) prime이라는 n 이하의 소수 리스트 생성 -> [2, 3, 5, 7 ...]
2) Combination으로 세가지 숫자 조합 만들기
3) 각각의 조합들의 합을 구함
4) 합을 key로 가지는 Counter 딕셔너리 생성
5) Counter딕셔너리[n] 으로 세 소수의 합이 n인 것의 개수를 리턴
import math
from itertools import combinations
from collections import Counter
def solution(n):
prime = [True for _ in range(n+1)]
for i in range(2, int(math.sqrt(n)) + 1):
j = 2
while i * j <= n:
if prime[i*j]:
prime[i*j] = False
j += 1
prime = [i for i in range(len(prime)) if prime[i]][2:]
return Counter(map(sum, combinations(prime, 3)))[n]