728x90
문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다.
다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
아이디어
소수는 약수가 1과 자기자신 총 2개밖에 없다는 점
코드
num = int(input())
lis = list(map(int,input().split(" ")))
count = 0
for x in lis:
if x!=1:
remain = []
for y in range(1,x+1):
if x%y ==0:
remain.append(y)
if len(remain) == 2:
count+=1
print(count)
해설
num = int(input()) #주어진 조건대로 첫 줄에 전체 개수를 입력받기
lis = list(map(int,input().split(" "))) #두번째 줄에는 공백으로 구별된 입력값을 정수로 바꾸고 리스트로 lis 변수에 저장한다.
count = 0 #소수여부를 판별해서 소수인 경우 count값을 +1 한다.
for x in lis: # 리스트의 요소들을 for 문으로 하나씩 접근
if x!=1: #만약 x 값이 1이 아니라면 (1은 소수가 아니므로 x가 1인 경우는 생각하지 않는다)
remain = [] # x값이 1이 아니라면, x값의 나머지를 담을 새로운 리스트 remain 생성
for y in range(1,x+1): # 1부터 x까지 하나씩 y 라는 변수로 저장됨
if x%y ==0: # 만약 x를 y로 나눴을 때 나머지가 0 이면 ( 즉 나누어 떨어진다면)
remain.append(y) # remain 변수에 y를 추가한다.
if len(remain) == 2: #위 for문을 다 돌고 나왔을 때 remain 리스트의 길이가 2라면 ( x를 나누어 떨어뜨리는 수가 1과 자기자신 밖에 없는 경우에 해당)
count+=1 #count 변수에 1을 추가한다.
print(count) #전체 lis에서 소수 개수만 출력된다.
3일동안 날 괴롭혔던 문제 해결
4달 전의 나는 대체 어떻게 문제를 푼 것인가 ;;;
반응형
'Study > Baekjoon Online Judge' 카테고리의 다른 글
[백준/파이썬] 2581. 소수 (0) | 2021.07.22 |
---|---|
[백준/파이썬] 4153. 직각삼각형 (0) | 2021.07.07 |
[백준/파이썬] 1463. 1로 만들기 (0) | 2021.03.17 |
[백준/파이썬] 2839. 설탕배달 (0) | 2021.03.06 |
[백준/파이썬] 10870. 피보나치 수 5 (2) | 2021.03.05 |