간단한 소수 구하는 문제였다:
import sys
N = int(sys.stdin.readline())
numbers_list = list(map(int, sys.stdin.readline().split()))
all_num = [x for x in range(2, max(numbers_list)+1)]
prime_num = []
for i in range(2, max(numbers_list)+1):
if i in all_num:
prime_num.append(i)
for j in range(len(all_num)):
if all_num[j]%i == 0 and all_num[j] != i:
all_num[j] = 0
prime_count = 0
for k in numbers_list:
if k in prime_num:
prime_count += 1
print(prime_count)
numbers_list
에는 N개의 숫자들을 리스트로 저장한다.
소수를 구하는 것은, 주어진 숫자들 중 가장 큰 숫자를 기준으로, 그 숫자 포함 그 숫자 이하의 수들 중 소수를 찾는 것으로 하면 시간이 덜 걸리게 끔 할 수 있다.
마지막으로 prime_count
라는 숫자는 소수의 개수를 세주기 위해 만든 변수로, 만약 numbers_list
에 있는 수들이 앞서 정의한 소수들의 리스트인 prime_num
에 있다면 소수일 것이므로, 이를 prime_count
에 1을 더해주고 마지막에 prime_count
를 출력해준다.
(소수를 구하는 것은 에라토스테네스의 체를 이용하여 풀었다.)
'알고리즘 테스트 > 백준 문제풀이 및 해설' 카테고리의 다른 글
<백준 문제풀이: 4948번> 베르트랑 공준 (0) | 2020.11.27 |
---|---|
<백준 문제풀이: 2581번> 소수 (0) | 2020.11.26 |
<백준 문제풀이: 10250번> 파이썬 - ACM 호텔 (0) | 2020.11.25 |
<백준 문제풀이: 2444번> 파이썬 - 별 찍기 - 7 (0) | 2020.11.24 |
<백준 문제풀이: 10870번> 파이썬 - 피보나치 수 5 (0) | 2020.11.24 |