https://www.acmicpc.net/problem/19699

 

19699번: 소-난다!

지난 번 헛간 청약의 당첨우(牛)가 발표됐다. 청약에 당첨된 소들은 날아갈 듯이 기뻐하다가 진짜로 하늘을 날았다. 하지만 이후로 소들은 날 수 없었다. 그러던 어느 날, 꿀벌에게 쏘이면 잠깐

www.acmicpc.net

 

 

itertools의 combination을 사용해서, 조합을 구하고

그 sum이 소수인 것을 확인한다.

 

import sys
import math
import itertools

input = sys.stdin.readline

n,m = map(int,input().split())
l = list(map(int,input().split()))
l.sort()

answer = set()


def isPrime(n):
    if n<=1: return False
    if (n%2==0):
        if n==2: return True
        else: return False

    for i in range(3,int(math.sqrt(n))+1,2):
        if(n%i==0): return False

    return True


for i in itertools.combinations(l,m):

    x = sum(i)
    if isPrime(x):
        answer.add(x)
answer = list(answer)
answer.sort()

if len(answer)==0:
    print(-1)
else:
    for i in answer:
        print(i, end = ' ')

+ Recent posts