코딩 테스트 (Python)/백준

[백준] 1978번 소수 찾기 (Python)

hihyuk 2024. 1. 6. 14:59
 

1978번: 소수 찾기

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

www.acmicpc.net

더보기

문제

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

입력

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

출력

주어진 수들 중 소수의 개수를 출력한다.

 

과정

  • 배열을 입력 받고 각 숫자가 1과 자신을 제외한 숫자로 나누어 지는지 확인한다.
  • 나누어지지 않는 값의 개수를 더해 준 후 출력

 

예제 입력

4
1 3 5 7

예제 출력

3

 

풀이

n = int(input())
nums = list(map(int, input().split()))
result = 0

for num in nums:
    cnt = 0
    if num > 1:
        for i in range(2, num):
            if num % i == 0:
                cnt += 1
        if cnt == 0:
            result += 1

print(result)

 

한 줄씩 해석해보기

n = int(input())
nums = list(map(int, input().split()))
result = 0
  • 수의 개수를 입력받는다.
  • 숫자들을 입력받고 리스트화 해준다.
  • 결과를 출력할 변수를 생성한다.
for num in nums:
    cnt = 0
    if num > 1:
        for i in range(2, num):
            if num % i == 0:
                cnt += 1
  • 숫자들을 하나씩 확인한다.
  • 나누어지는 수가 있는지 확인하기 위해 cnt =  0 을 만든다.
  • 1과 자신을 제외한 수로 나누기 위해 2 부터 num까지를 범위로 준다
  • 만약 나누어 지는 수가 있을 시 cnt의 개수를 올려준다.
if cnt == 0:
    result += 1

print(result)
  • for문을 돈 후 cnt 가 0이라면 1과 자기자신을 제외한 나누어지는 수가 없다는 뜻이므로 소수이다.
  • result의 개수를 올려준다.
  • 배열을 모두 확인 후 result값을 리턴한다.