Baekjoon 문제 풀기 (1978번 : 소수 찾기) Python

1978번 : 소수 찾기

1. 문제읽기


에라토스테네스의 체!

이미 1929번:소수구하기문제를 풀어봐서 그런지 쉽게 풀 수 있었다.
동일하게 에라토스테네스의 체 방법을 이용해서 풀면 된다.

2. 제출 코드


소수인지 아닌지 판별하는 isPrime 함수를 만든 뒤, 리턴 값을 이용하여 몇 개의 소수가 존재하는지 찾아냈다.
sq_arr 리스트에 range함수 뒤에 +1을 안해줘서 sq가 포함이 안되어서 계속 오답이 나왔다.
range 함수에서 뒤에 번호는 포함되지 않는다는 아주 기초적인 사실을 틀리면 안되겠다고 생각했다.

n = int(input())

arr = list(map(int, input().split()))

def isPrime(num):
	if num == 1:
		return 0
	if 1 < num < 4:
		return 1
	sq = int(num**0.5)
	sq_arr = list(range(2, sq+1))
	for s in sq_arr:
		if num%s == 0:
			return 0
	return 1

ans = []
for i in arr:
	ans.append(isPrime(i))
print(ans.count(1))

3. 공부할 것


리턴값을 1과 0으로 받지 않아도, boolean 값으로 받아서 for문을 돌려줄 때 true라면 count +1 을 해주는 식으로 푸는 방법도 있었다.

댓글남기기