728x90
https://www.acmicpc.net/problem/1978
문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
예제 입력 1 복사
4
1 3 5 7
예제 출력 1 복사
3
문제풀이
숫자를 입력받을 때 map함수를 사용하여 int 타입과 공백을 구분하기 위해 split함수를 사용
split을 적용할 경우 예 1 12 3 출력 1 , 12 , 3 인식
하지 않을 경우 공백을 구분 하지 못한다.
map은 map(적용시킬 함수, 적용할 값들) 문자열.split() 함수는 문자열을 일정한 규칙으로 잘라서 리스트로 만들어 주는 함수 문자열.split(sep, maxsplit) 함수는 문자열을 maxsplit 횟수만큼 sep의 구분자를 기준으로 문자열을 구분하여 잘라서 리스트로 만듬
변수 i를 나누어서 0으로 나누어 떨어지는지를 확인 이때 2부터 n-1까지의 범위 설정 1과 자기 자신을 제외한 숫자로 나누었을 때 0으로 나누어 떨어지면 error 변수에 1을 더함. 나누어 떨어지지 않으면 소수 이므로 추가 해준다.
코드
n = int(input())
numbers = map(int, input().split())
decimal = 0
for num in numbers:
divide_total = 0
if num > 1 :
for i in range(2, num):
if num % i == 0:
divide_total += 1
if divide_total == 0:
decimal += 1
print(decimal)
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준/Silver II] 스택 수열 - 1874 (0) | 2024.05.14 |
---|---|
[백준/Silver IV] 괄호 - 9012 (0) | 2024.05.13 |
[백준/Bronze I] 단어 뒤집기 - 9093 (0) | 2024.05.11 |
[백준/Silver IV] 스택 - 10828 (0) | 2024.05.10 |
백준 1110번 더하기 사이클 (0) | 2023.01.15 |