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 ~ 가 돌아가도록 해도 문제 없으며 이 방법이 더 간단한 것 같다.
'Learning-log > Algorithm 문풀' 카테고리의 다른 글
(Java) SWEA 1860. 진기의 최고급 붕어빵 풀이(2023-02-24) (0) | 2023.02.26 |
---|---|
백준(파이썬, python) - 2581번 소수 (2022.11.07) (0) | 2022.11.07 |
백준(파이썬, python) - 2839번 설탕 배달(2022.11.07) (0) | 2022.11.07 |
백준(파이썬, python) - 10250번 ACM호텔(2022.11.06) (0) | 2022.11.07 |
백준(파이썬, python) - 2869번 달팽이는 올라가고 싶다(2022.11.05) (0) | 2022.11.06 |