[백준] 1978번 문제

in hive-196917 •  4 years ago  (edited)

소수찾기 : 주어진 수 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

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



Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!