일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- react
- MSA
- IT
- Spring
- 운영체제
- mongoDB
- 디자인 패턴
- C
- 파이썬
- Heap
- redis
- Algorithm
- MySQL
- Java
- 자료구조
- 알고리즘
- OS
- c언어
- spring webflux
- 네트워크
- Kafka
- Data Structure
- JavaScript
- Proxy
- JPA
- Galera Cluster
- 컴퓨터구조
- 백준
- design pattern
- 자바
Archives
- Today
- Total
시냅스
백준 boj 1978 - 소수 찾기 (파이썬, python) 본문
https://www.acmicpc.net/problem/1978
1978번: 소수 찾기
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
www.acmicpc.net
너무 많은 시간 초과들과의 싸움이 있었고...
더는 시간초과로 골머리 썩고 싶지 않은 마음에
애초에 에라토스테네스의 체를 활용하여 문제를 풀었다.
문제에서 주어진 시간이 넉넉하여 이렇게 풀지는 않아도 될 것 같다.
문제는 최대 1000 까지의 숫자가 최대로,
미리 모든 수를 1로 채운 배열을 하나 생성하였다,
이후 모든 수의 배수는 0으로 바꿔, 소수가 아님을 표시했다.
이후 입력받은 수를 위 만들어 둔 배열에서 확인하는 식으로 풀이하였다.
code
max_val = 1000
dp = [1] * 1001
dp[0] = 0
dp[1] = 0 # 1은 소수가 아님
for i in range(2, max_val + 1):
j = 2
while i * j <= max_val:
dp[i * j] = 0
j += 1
n = int(input())
values = list(map(int, input().split()))
result = 0
for value in values:
if dp[value]:
result += 1
print(result)
'알고리즘' 카테고리의 다른 글
백준 boj 17425 - 약수의 합 (파이썬, python) (0) | 2022.02.08 |
---|---|
백준 boj 6588 - 골드바흐의 추측 (파이썬, python) (0) | 2022.02.08 |
백준 boj 2609 - 최대공약수와 최소공배수 (파이썬, python) (0) | 2022.02.08 |
백준 boj 4375 - 1 (파이썬, python) (0) | 2022.02.07 |
백준 boj 17427 - 약수의 합 2 (파이썬, python) (0) | 2022.02.07 |
Comments