일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- web
- python3
- DP
- 백준
- 에라토스테네스의체
- Spring
- testing
- RequestBody
- Backend
- Spring Data JPA
- WebMvcTest
- C++
- Andrew Ng
- SpringBoot
- 코딩
- responsebody
- 책리뷰
- 로지스틱회귀
- withmockuser
- PS
- 딥러닝
- 정렬
- 신경망기초
- REST API
- FNN
- 그리디
- 쉬운딥러닝
- 스택
- 알고리즘
- BOJ
Archives
- Today
- Total
꾸준히하자아자
[프로그래머스] 소수 찾기- level1 본문
728x90
728x90
프로그래머스 문제 중 "소수 찾기"라는 문제를 푸는데
이렇게 풀었더니 몇몇 테스트케이스에서 오류초과가 났다.
구글링을 했더니 "에라토스테네스의 체" 라는 방법을 알게 되었다.
"에라토스테네스의 체" 란?
범위에서 합성수를 지우는 방식으로 소수를 찾는 방법. 1. 1은 제거 2. 지워지지 않은 수 중 제일 작은 2를 소수로 채택하고, 나머지 2의 배수를 모두 지운다. 3. 지워지지 않은 수 중 제일 작은 3을 소수로 채택하고, 나머지 3의 배수를 모두 지운다. 4. 지워지지 않은 수 중 제일 작은 5를 소수로 채택하고, 나머지 5의 배수를 모두 지운다. 5. (반복)
답
def solution(n):
answer = set(range(2,n+1))
for i in range(2,n+1):
if i in answer:
answer -= set(range(i*2,n+1,i))
return len(answer)
answer에 set()으로 2~n까지 저장하고
2~n까지 answer에 i가 있다면 i의 배수를 모두 제거한다.
그러면 2~n까지의 소수만 answer에 남아있게 된다.
answer의 개수는 len()사용해서 표현!!
728x90
728x90
'개발 > 백준 & 프로그래머스' 카테고리의 다른 글
[백준]15649번 N과 M(1) c/c++ (0) | 2022.08.26 |
---|---|
[백준]1629번 곱셈 c/c++ (0) | 2022.08.25 |
[백준]1431번 시리얼 번호 (sort 함수 응용) (0) | 2022.08.16 |
[백준]1463번 1로 만들기 c/c++ (0) | 2022.08.04 |
[백준]2217번 로프 c/c++ (0) | 2022.08.02 |