[백준] 1978번 문제

in #steem5 months ago



소수찾기 : 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

https://www.acmicpc.net/problem/1978

4595.PNG

코드

input() #input으로 한줄 그냥 넘기기
b = list(map(int, input().split())) # 자료 받기
result = [] # result 리스트 만들기
for i in b: # for문 만들기
d = 1 # 제수 d = 1
verify = [] # 검증 리스트 생성
while d < 1001: # d가 1000이 넘어갈때까지
if d > 1: # 만약 d > 1이면
if i % d == 0: # 만약 b 리스트 안의 i번째 원소를 q로 나누었을때 나머지가 0이라면
verify.append('1') # 검증 리스트에 '1'을 추가한다
d += 1 # 제수 d에 1을 더해준다
if len(verify) == 1: #만약 검증 리스트의 길이가 1이면
result.append('1') # 결과 리스트에 '1'을 추가한다

print(len(result)) # 결과 리스트의 길이를 프린트해라

코드 설명

input() #input으로 한줄 그냥 넘기기
b = list(map(int, input().split())) # 자료 받기

자료를 받아준다

이때, 첫줄의 자료는 쓸모없으므로 input()해줘서 넘기자


result = [] # result 리스트 만들기

나중에 소수의 개수를 프린트하기 위해서 리스트를 만들어준다


for i in b: # for문 만들기
d = 1 # 제수 d = 1
verify = [] # 검증 리스트 생성
while d < 1001: # d가 1000이 넘어갈때까지
if d > 1: # 만약 d > 1이면
if i % d == 0: # 만약 b 리스트 안의 i번째 원소를 q로 나누었을때 나머지가 0이라면
verify.append('1') # 검증 리스트에 '1'을 추가한다
d += 1 # 제수 d에 1을 더해준다

앞에서 받은 자료 b를 반복해서 검증해준다

제수 d를 1로 설정해준다

verify라는 검증 리스트를 하나 생성한다

while d < 1001: 은 d가 1000이 넘어가면 false이므로 while문이 멈추게 된다


만약 d > 1이고 i%d == 0이라면 검증 리스트에 '1'을 추가한다

이 한 과정이 끝나면 제수 d에 1을 더해주고 반복한다


    if len(verify) == 1: #만약 검증 리스트의 길이가 1이면
result.append('1') # 결과 리스트에 '1'을 추가한다

위 문장은 윗윗문장의 for문 하위에 있다

즉, while문을 끝내고 검증 리스트를 확인하는 단계이다

'검증 리스트의 길이가 1이면' == '제수가 1을 제외한 자기자신 뿐이라면'

결과 리스트에 '1'을 추가한다


print(len(result)) # 결과 리스트의 길이를 프린트해라

마지막으로 결과 리스트의 길이를 프린트하면?


Input 속 소수의 개수가 나온다


262621.PNG

한번 실수하고 다시 고쳐서 맞았당..