def isPnum(n):
for i in range(2, n):
if n%i == 0: return False
return True
def solution(nums):
nums = sorted(nums)
p_num = []
answer = -1
for i in range(len(nums)):
for j in range(1, len(nums)):
for k in range(2, len(nums)):
if nums[i]!=nums[j] and nums[i]!=nums[k] and nums[j]!=nums[k] and i<j and i<k and j<k:
n = nums[i] + nums[j] + nums[k]
p_num.append(n)
answer = sum(list(map(isPnum, p_num)))
return answer
map(function, list): 리스트의 모든 원소에 함수 적용
2부터 n-1까지의 모든 수로 나누어서 나머지가 0인 경우가 없는 수 소수 판별
3개의 리스트에서 서로 다른 3개의 수를 인덱스가 한 방향 순서대로 하나씩 뽑아 합하여 중복 제거
boolean 리스트에서 True의 수는 sum을 사용해서 카운트
+ 다른 풀이
from itertools import combinations
def isPnum(n):
for i in range(2, n):
if n%i == 0: return False
return True
def solution(nums):
p_num = list(map(sum, list(combinations(nums, 3))))
answer = sum(list(map(isPnum, p_num)))
return answer
combinations(list, n): list 안에서 n개의 원소로 된 조합을 튜플로 생성