Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 문자열
- HashSet
- fragment identifier
- python
- HashMap
- 2017 카카오 코드
- dfs
- 에라토스테네스의 체
- 동적계획법
- 최소공배수
- 알고리즘
- 어려웠던 문제
- Java
- 규칙찾기
- 후위 표기법
- 영문자 확인
- 보이어무어
- 완전 탐색
- 조합
- 튜플
- 프로그래머스
- 반복문
- 순열
- Stack
- 점프와 순간이동
- 쿼드압축 후 개수세기
- Dynamic Programming
- pandas
- 메뉴리뉴얼
- 완전탐색
Archives
- Today
- Total
csmoon1010의 SW 블로그
에라토스테네스의 체 > [200510] 소수 찾기 - 연습문제(level1) 본문
1. 문제이해
- 1부터 n까지의 수 중 소수의 개수 구하기
2. 전략
- 에라토스테네스의 체 이용
1. 소수 여부를 나타내는 배열 생성
2. i의 배수에 해당하는 수 체크(i = 2)
3. i가 n의 제곱근일 때까지 반복(n의 제곱근 이상의 수가 소수가 아니라면 이미 앞에서 지워졌을 것!!)
- 개수는 n-1에서 시작해 소수 아닌 수 발견할 때마다 하나씩 감소시키기
3. 참고사항
- 에라토스테네스의 체의 마지막 조건은 n의 제곱근까지여도 된다!!(Math.sqrt(n) 이용)
- 심화 ver : 프로그래머스 소수찾기(완전탐색)
2020/09/18 - [Coding Test/프로그래머스] - ★[200918] 소수 찾기 - 완전탐색(level2)
- 다른 방법1 : n(or n의 제곱근)보다 작은 2와 홀수들과 나눴을 때 나누어 떨어지는 수가 없기 --> 시간복잡도 문제
- 다른 방법2 : n의 제곱근보다 작은 소수로 나누기(소수 캐시 관리 필요)
4. 코드
class Solution {
public int solution(int n) {
int answer = n-1; //1은 미리 제외
boolean[] checklist = new boolean[n+1];
for(int i = 2; i <= Math.sqrt(n); i++){
if(!checklist[i]){
for(int j = 2; i*j <= n; j++){
if(!checklist[i*j]){
checklist[i*j] = true;
answer--;
}
}
}
}
return answer;
}
}
'Coding Test > 알고리즘' 카테고리의 다른 글
패턴 매칭 알고리즘(Brute Force, KMP, 보이어 무어) (0) | 2020.11.29 |
---|---|
Search(검색, 탐색) _ Sequential Search, Binary Search (0) | 2020.11.17 |
DFS(Depth-first Search) / BFS(Breadth-first Search) (0) | 2020.11.04 |
순열/조합 (완전탐색) (0) | 2020.09.18 |
Dynamic Programming (동적 계획법) (0) | 2020.08.07 |
Comments