Lumpy Space Princess - Adventure Time
코딩테스트/백준

백준 [1978] - 소수 찾기

yaebb_82 2022. 8. 27.

 

문제

 

 

 

작성한 코드

import sys

input = sys.stdin.readline

N = int(input())
numbers = list(map(int, input().split()))
counts = N

for i in range(N):
    if numbers[i] == 1:
        counts -=1
  
    for j in range(2, numbers[i]):
        if (numbers[i]%j) == 0:
            counts -= 1
            break

print(counts)

- sys.stdin.readline을 input에 할당하여 사용한다.

- input()으로 문자를 입력받고, int형으로 형변환하여 N에 저장한다. (N은 입력받을 수의 개수)

- input()으로 문자를 입력받고, split()으로 구분한 뒤, int형으로 형변환하여 map()으로 list인 numbers에 할당한다.

- 소수의 개수를 세기 위해 counts에 입력한 값인 N만큼 할당해준다.

- for i in range(N): N만큼 반복문 for문을 반복하면서 list형인 numbers의 각 인덱스에 해당하는 값들을 비교한다.

- if numbers[i] == 1: 만약 numbers의 각 인덱스에 해당하는 값이 1이라면, counts의 개수를 1 감소시킨다. (소수에 1은 포함되지 않는다.)

- for j in range(2, numbers[i]): 2부터 numbers[i]-1만큼 반복문 for문을 돌리면서 값을 비교한다.

- if (numbers[i]%j) == 0: 만약 numbers[i]를 j로 나누었을 때 나머지가 0이라면, 소수가 아니라는 뜻이기 떄문에 counts의 값을 1 감소시킨뒤 break문으로 반복문을 빠져나온다. 이후 다음 인덱스의 값을 비교한다.

- 반복문이 끝나면 print()로 소수의 개수인 counts를 출력한다.

 

 

 

반응형

'코딩테스트 > 백준' 카테고리의 다른 글

백준 [11047] - 동전 0  (0) 2023.02.02
백준 [2581] - 소수  (0) 2022.08.27
백준 [10757] - 큰 수 A+B  (0) 2022.08.25
백준 [2839] - 설탕 배달  (0) 2022.08.25
백준 [2775] - 부녀회장이 될테야  (0) 2022.08.25

댓글