[백준] 1978번 : 소수 찾기

뚝딱이 공학도·2022년 1월 12일
0

문제풀이_백준

목록 보기
17/160

문제

나의 첫번째 제출

n=int(input())
n2=list(map(int, input().split()))
c, no=0,0
for i in n2:
    if i>1:
        for j in range(2,i):
            if (i%j)==0:
                no+=1
        if no==0:
            c+=1
print(c)

나의 두번째 제출

n=int(input())
n2=map(int, input().split())
c, no=0,0
for i in n2:
    if i>1:
        for j in range(2,i):
            if i%j==0:
                no+=1
        if no==0:
            c+=1
print(c)

첫번째와는 다르게 list를 제거해주었다.
그래도 오류가 발생했다.

나의 최종 제출

n=int(input())
n2=map(int, input().split())
c=0
for i in n2:
    no=0
    if i>1:
        for j in range(2,i):
            if i%j==0:
                no+=1
        if no==0:
            c+=1
print(c)

no변수를 반복문 안에서 초기화해주었다.
실수를 한 게 n2를 순차적으로 접근하면서 현재 접근한 숫자가 소수가 아니면
no에 1을 더해 no가 0이 아니게 만들어 소수를 판별하도록 했다.
여기서 실수를 한 것이다.
한 숫자에 접근하면(ex 3) 그 다음 숫자에서는(ex 5) no를 0으로 만들어 다시 소수인지 판별해야 됐는데 바보같이 바깥에다 no를 선언해 초기화 할 수 없게 만들어 버린것..(결과적으론 처음 숫자를 제외하고 모두 소수가 아니라고 판별함)

0개의 댓글