문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
예제 입력 1 복사
4
1 3 5 7
예제 출력 1 복사
3
이번에도 검색 없이 풀었다...! 대견하다 ㅎㅎ
N = int(input())
arr = map(int, input().split())
cnt = 0 # 소수의 개수 표시할 변수
for i in arr: # 입력받은 arr을 순회하며
lst = [] # i가 바뀔 때마다 리스트 리셋, 소수를 추가해서 나중에 개수 셀 때 사용할 것임
for j in range(1, i+1): # i를 받고, 1부터 i까지 순회하며
if i % j == 0: # i가 j로 나누어 떨어지면
lst.append(j) # 리스트에 j 추가
if len(lst) == 2: # 리스트의 길이가 2면, 즉 리스트에 2개 밖에 없으면(1과 자기자신만 있을 수 있음)
cnt += 1 # cnt 1 증가
print(cnt)
설명은 주석으로 대신하겠다.
입력을 배열 형태로 받아 배열을 순회하며, 순회하는 수가 바뀔 때마다 소수를 추가할 리스트를 초기화 해줌
순회할 때마다 1부터 i까지 한 번 더 순회하며 나누어 떨어지면 리스트에 나누는 수 추가
리스트의 길이가 2이면, 즉 리스트에 2개만 있다면 1과 자기자신으로만 나누어 떨어지니까 소수인 것임.
그 때 cnt, 소수의 개수를 표시할 변수를 1 증가시킨다.
n = int(input())
data = list(map(int, input().split()))
count = 0
for x in data:
for i in range(2, x+1):
if x % i == 0:
if x == i:
count += 1
break
print(count)
이렇게 풀 수 있네....
주어진 입력을 순회하며 2부터 입력까지, x가 i로 나누어 떨어지면서 x가 i 일때. 즉 자기 자신으로 나누어 떨어질대 count 변수 1 증가.
x가 i로 나누어 떨어졌는데 x와 i가 다른 경우, break
'코딩테스트 > 백준' 카테고리의 다른 글
백준 > 단계별로 풀어보기 > 약수, 배수와 소수 > 11653번: 소인수분해 (1) | 2024.07.23 |
---|---|
백준 > 단계별로 풀어보기 > 약수, 배수와 소수 > 2581번: 소수 (1) | 2024.07.23 |
백준 > 단계별로 풀어보기 > 약수, 배수와 소수 > 9506번: 약수들의 합 (2) | 2024.07.22 |
백준 > 단계별로 풀어보기 > 약수, 배수와 소수 > 2501번: 약수 구하기 (2) | 2024.07.22 |
백준 > 단계별로 풀어보기 > 약수, 배수와 소수 > 5086번: 배수와 약수 (0) | 2024.07.22 |