Learning-log/Algorithm 문풀
백준(파이썬, python) - 1978번 소수 찾기 (2022.11.07)
why제곱
2022. 11. 7. 19:46
1) 문제
2) 풀이
import sys
T = int(sys.stdin.readline())
numbers = list(map(int,sys.stdin.readline().split()))
count = 0
for i in numbers:
if i ==2:
count+=1
elif i == 1:
count +=0
else:
test = 0
for j in range(2,i):
if i%j == 0:
test += 1
if test == 0:
count += 1
print(count)
3) 문법 및 풀이과정
소수란, 1과 자기 자신을 제외한 다른 수로 나누어지지 않는 수를 의미한다.
에라토스테네스의 체를 활용할 수도 있지만 이 문제의 경우 입력값의 범위가 100이하로 그렇게 크지 않고, 시간제한도 넉넉하기 때문에 그냥 2 부터 n-1까지 직접 나누어 소수를 찾는 방법을 이용했다.
(1) 테스트케이스(T)를 입력받는다.
(2) 입력된 숫자를 list로 만든다.
(3) count = 0을 정의한다. (테스트 하는 수가 소수일 때마다 1씩 더해지도록 할 것이다.)
(4) i == 2인 경우와 1인 경우는 if문으로 따로 빼서 각각 count에 1이 더해지고 , pass되도록 한다.
(5) for문을 이용해 2부터 i-1까지의 정수로 i를 나누어 나머지가 0인 경우 test에 1이 더해지도록 한다.
(6) test에 1이라도 더해졌다면 그 수는 1과 자기자신이 아닌 다른 수로 나누어졌다는 의미이므로 test가 0일 때만 count에 1이 더해지도록 한다.
(7) count를 출력한다.
cf. (4)경우를 수정하여 if i>1 경우에 for j in range ~ 가 돌아가도록 해도 문제 없으며 이 방법이 더 간단한 것 같다.