알고리즘/알고리즘 문제 풀이
(Python) 백준 1978번 - 소수 찾기
용꿀
2022. 12. 26. 01:16
문제 링크 : https://www.acmicpc.net/problem/1978
1978번: 소수 찾기
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
www.acmicpc.net
풀이
처음엔 단순하게 에라토스테네스의 체 방식으로 풀어서는 시간 초과가 날 수 있을거 같았으나 문제 분류에 에라토스테네스의 체라고 적혀있어서 시도해보았더니 제한 시간 내에 통과할 수 있었다.
n = int(input())
count = 0 # 소수가 아닐 경우를 count
arr = list(map(int, input().split()))
for num in arr:
if num == 1: # 1은 소수가 아님
count += 1 # 소수가 아니면 count
else:
for div in range(2, num):
if num % div == 0: # 2부터 (자기자신-1)까지 한 번이라도 나누어 떨어지면 소수가 아님
count += 1 # 소수가 아니면 count
break
print(n - count) # 전체 경우에서 소수가 아닌 경우의 수를 빼면 소수인 경우의 수가 나옴