본문 바로가기

Computer Programming/Python

백준 1978 ) 소수찾기 Python 파이썬

문제 링크 : https://www.acmicpc.net/problem/1978

 

1978번: 소수 찾기

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

www.acmicpc.net

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

 

한 주 동안 알고리즘 문제를 풀면서 3-4개 정도의 소수 찾기 응용 문제를 마주쳤다. 특히 며칠 전 4898 베르트랑 공준 문제때문에 꽤나 머리가 아팠었기 때문에...

 

이제 이런 소수 문제를 보면 어느정도는 감이 잡힌다 ㅠ

 

 

제출답안

n = int(input())

arr = list(map(int,input().split()))

count = len(arr)
for i in arr:
    if i == 1:
        count -= 1
    for j in range(2,i): 
        print("i :", i)
        if i % j == 0:
            count -= 1
            break

print(count)

 

주어진 수 n개를 모두 소수일 것이다라고 가정 한 후 len(arr)을 변수로 둔 뒤, 소수인지 체크한 다음 소수가 아니면 count에서 1씩 뺀다.

 

그러면 소수인것만 남게 된다.

 

제출하기 직전 빼먹었던 부분은 소수문제 풀때 가장 중요한 1이다. 1은 소수가 아니기 때문에 for loop 돌기 전에 미리 체크해야한다.