코딩테스트/Algorithm

[백준 1978] 소수 찾기

hu6r1s 2023. 12. 14. 17:45

[Bronze II] 소수 찾기 - 1978

문제 링크

성능 요약

메모리: 31120 KB, 시간: 44 ms

분류

소수 판정, 정수론, 수학

제출 일자

2023년 12월 5일 21:55:11

문제 설명

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

입력

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

출력

주어진 수들 중 소수의 개수를 출력한다.

n = int(input())
li = list(map(int, input().split()))
if 1 in li:
    li.remove(1)
result = 0
for l in li:
    count = []
    for i in range(1, l+1):
        if l % i == 0:
            count.append(i)
    if len(count) == 2:
        result += 1
print(result)

풀이

소수는 1과 자기 자신만을 가지고 있는 수이다. 여기서 1은 소수가 아니다.

그렇기 때문에 입력 데이터 중 1이 있으면 1을 제거하고 남은 리스트를 반복하여 소수들을 구하고 소수의 개수가 2이면 개수를 증가시켰다.

다른 풀이로 2부터 n까지 나눈 나머지가 0인 개수가 1개이면 소수이기 때문에 result 변수를 1 증가하면 더 좋은 풀이가 될 것 같다.

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

[백준 python 14215] 세 막대  (0) 2023.12.14
[백준 11653] 소인수분해  (0) 2023.12.14
[백준 2292] 벌집  (0) 2023.12.14
[백준 2903] 중앙 이동 알고리즘  (0) 2023.12.14
[백준 10798] 세로읽기  (0) 2023.12.14