19699번: 소-난다!
지난 번 헛간 청약의 당첨우(牛)가 발표됐다. 청약에 당첨된 소들은 날아갈 듯이 기뻐하다가 진짜로 하늘을 날았다. 하지만 이후로 소들은 날 수 없었다. 그러던 어느 날, 꿀벌에게 쏘이면 잠깐
www.acmicpc.net
코드
from itertools import combinations
n, m = map(int, input().split())
h = list(map(int, input().split()))
prime = [True]*10000
for i in range(2, 10000):
if prime[i]:
for j in range(i*2, 10000, i):
prime[j] = False
ans = set()
for comb in combinations(range(n), m):
total = 0
for c in comb:
total += h[c]
if prime[total]:
ans.add(total)
if ans:
print(*sorted(list(ans)))
else:
print(-1)
N, M의 범위는 1 이상 9이하이므로 N마리의 소 중에 M마리를 뽑는 것은 어렵지 않다. 뽑은 소들의 무게의 합이 소수인가 판별하는 것이 포인트라고 생각한다.
소수를 판정하는 알고리즘으로는 '에라토스테네스의 체'이다. 이 알고리즘은 이름처럼 수를 체로 걸러내버린다. 무슨 말이냐면 소수인 어떤 수가 있을 때, 그 수의 배수들은 당연히 소수가 될 수 없다. 이 점을 이용하여 for문으로 2부터 원하는 범위까지 반복문을 돌며 소수인 수가 나오면 그 수의 배수들을 지워버리는(False로 만드는) 과정을 반복하는 방법으로 소수를 판정하는 것이 '에라토스테네스의 체'이다.
이렇게 범위 내의 모든 수를 돌며 소수가 될 수 없는 숫자들을 떨궈내고 나면 배열에 소수들 만이 남게된다.
'문제풀이 > 수학' 카테고리의 다른 글
[Python/파이썬] 백준 2740번 행렬 곱셈 (0) | 2024.03.27 |
---|---|
[Python/파이썬] 백준 21275번 폰 호석만 (0) | 2024.03.22 |
[Python/파이썬] 백준 1459번 걷기 (0) | 2024.03.08 |
[Python/파이썬] 백준 10610번 30 (0) | 2024.02.29 |
[Python/파이썬] 백준 3343번 장미 (1) | 2023.12.26 |
19699번: 소-난다!
지난 번 헛간 청약의 당첨우(牛)가 발표됐다. 청약에 당첨된 소들은 날아갈 듯이 기뻐하다가 진짜로 하늘을 날았다. 하지만 이후로 소들은 날 수 없었다. 그러던 어느 날, 꿀벌에게 쏘이면 잠깐
www.acmicpc.net
코드
from itertools import combinations n, m = map(int, input().split()) h = list(map(int, input().split())) prime = [True]*10000 for i in range(2, 10000): if prime[i]: for j in range(i*2, 10000, i): prime[j] = False ans = set() for comb in combinations(range(n), m): total = 0 for c in comb: total += h[c] if prime[total]: ans.add(total) if ans: print(*sorted(list(ans))) else: print(-1)
N, M의 범위는 1 이상 9이하이므로 N마리의 소 중에 M마리를 뽑는 것은 어렵지 않다. 뽑은 소들의 무게의 합이 소수인가 판별하는 것이 포인트라고 생각한다.
소수를 판정하는 알고리즘으로는 '에라토스테네스의 체'이다. 이 알고리즘은 이름처럼 수를 체로 걸러내버린다. 무슨 말이냐면 소수인 어떤 수가 있을 때, 그 수의 배수들은 당연히 소수가 될 수 없다. 이 점을 이용하여 for문으로 2부터 원하는 범위까지 반복문을 돌며 소수인 수가 나오면 그 수의 배수들을 지워버리는(False로 만드는) 과정을 반복하는 방법으로 소수를 판정하는 것이 '에라토스테네스의 체'이다.
이렇게 범위 내의 모든 수를 돌며 소수가 될 수 없는 숫자들을 떨궈내고 나면 배열에 소수들 만이 남게된다.
'문제풀이 > 수학' 카테고리의 다른 글
[Python/파이썬] 백준 2740번 행렬 곱셈 (0) | 2024.03.27 |
---|---|
[Python/파이썬] 백준 21275번 폰 호석만 (0) | 2024.03.22 |
[Python/파이썬] 백준 1459번 걷기 (0) | 2024.03.08 |
[Python/파이썬] 백준 10610번 30 (0) | 2024.02.29 |
[Python/파이썬] 백준 3343번 장미 (1) | 2023.12.26 |