1978번 : 소수 찾기 문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/1978
1978번: 소수 찾기
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
www.acmicpc.net
풀이 코드
n = int(input())
num = map(int, input().split())
count = 0
for x in num:
for i in range(2, x+1):
if x % i == 0:
if x == i:
count += 1
break
print(count)
n = int(input())
- 첫째 줄에서 입력받은 정수를, 변수 n 에 저장
- input() 은 한 줄의 문자열만 입력받을 수 있음
- 입력받은 문자열을 정수로 처리하기 위해 int() 함수를 사용
num = map(int, input().split())
- 둘째 줄에서 입력받은 n 개의 정수를, num 리스트에 저장
- 정수가 공백으로 나누어 입력되므로, input().split() 으로 문자열을 공백으로 나뉜 리스트로 변환
- map 을 이용하여 리스트의 모든 원소에 int() 함수를 적용
count = 0
- 소수의 개수를 저장할 변수 count 선언
- 0으로 초기화
for x in num:
- 'for 변수 in 리스트' 형태로, in 뒤에 오는 데이터로는 리스트, 튜플, 문자열 사용
- num 리스트에 저장한 정수를 하나씩 순차 방문
(하나씩 소수인지 아닌지 판단하기 위해서)
for i in range(2, x+1):
- range() 를 사용하여 2부터 x 까지 for문을 반복
- i 값으로 2 부터 x까지 들어감
- 소수는 1보다 큰 자연수 중에 있으므로, 2부터 탐색
if x % i == 0: / if x == i: / count += 1
- 입력받은 정수 x 를 2부터 n-1 까지 반복하여 나눔
- i 값이 x 에 도달하는 경우, 1을 제외하고 나누어 떨어지는 수가 없다는 뜻
- 소수에 해당하므로, count 값을 1 증가
break
- 앞선 if 문에서 나누어 떨어지는 수가 있는 경우, 소수가 아님
- break 문으로 for 문을 빠져나옴
- 소수가 아니므로, count 값을 증가하지 않음
print(count)
- 소수의 개수를 저장한 변수 count 출력
나동빈 '이것이 코딩 테스트다 with 파이썬' 책을 참고하여 작성하였습니다.
https://www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC
'백준 알고리즘 문제 풀이 [Python]' 카테고리의 다른 글
[백준/Python] 11653번 소인수분해 (기본수학2) (0) | 2023.02.25 |
---|---|
[백준/Python] 2581번 소수 (기본수학2) (1) | 2023.02.25 |
[백준/Python] 10757번 큰 수 A+B (기본수학1) (0) | 2023.02.25 |
[백준/Python] 2839번 설탕 배달 (기본수학1) (0) | 2023.02.25 |
[백준/Python] 2775번 부녀 회장이 될테야 (기본수학1) (0) | 2023.02.23 |