백준 1978번 문제풀이

박세은·2023년 8월 14일

Algorithm

목록 보기
7/11


소수를 찾는 문제!
얼마 전에 에라토스테네스의 체 코드를 정리해둔 덕분에 오래 걸리지 않아 풀 수 있었다.
에라토스테네스의 체 설명 링크

정말 간단했다!
수의 개수 N을 입력받은 다음 그 N만큼의 숫자를 다시 입력받아서 소수인지 판별해주면 되는 문제였다.

import math, sys

input = sys.stdin.readline

MAX = 1000
prime = [True for i in range(MAX+1)]

prime[1] = False
for i in range (2, int(math.sqrt(MAX))+1):
    if(prime[i] == True):
        j = 2
        while i*j <= MAX:
            prime[i*j] = False
            j += 1

cnt = 0
N = int(input())
n = list(map(int, sys.stdin.readline().split()))
    
while N > 0:
    temp = n[N-1]
    
    if prime[temp]:
        cnt += 1
        
    N -= 1
print(cnt)

앞에 저번에 작성한 에라토스테네스의 체를 다시 써주고,
그 다음 숫자들을 입력받았다.

몇 개의 수를 입력받게 될 지 알 수 없기 때문에 우선은 n이라는 리스트에 숫자들을 전부 입력받는 방식으로 했다.
그런 다음 while문 안에서 리스트의 수들을 temp에 집어 넣고, 하나씩 소수인지 판별하도록 했다. 소수가 맞을 경우 cnt에 1씩 더해줬다.

딱히 큰 어려움은 없었다 이번 문제에는!

백준 문제:
https://www.acmicpc.net/problem/1978

1개의 댓글

comment-user-thumbnail
2023년 8월 14일

좋은 글 감사합니다. 자주 방문할게요 :)

답글 달기