코딩 테스트 (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값을 리턴한다.