티스토리 뷰
#include <vector>
using namespace std;
int solution(int n) {
int answer = 0;
// 에라토스테네스의 채 소수(true) 소수아님(false)
vector<bool> arr(n+1, true);
for(int i =2; i<=n;i++){
if(arr[i] == true){
answer++;
// i를 제외한 i의 배수는 다 소수 아님
for(int j =2; j*i <= n; j++){
arr[j*i] = false;
}
}
}
return answer;
}
j <= sqrt(i)으로 for문을 돌리면서 i%j==0 인 경우를 제외하는 방식으로 소수를 찾으면 문제는 해결되지만 효율성 측면에서 시간초과가 발생한다.
따라서 "에라토스테네스의 채" 방식을 사용한다.
처음 모든 수를 소수라고 한다. 2, 3, 4, 5, 6,... 모두 소수이지만 2의 배수를 지우고 3의 배수, 5의 배수, i의 배수를 지우다보면 소수만 남게된다.
따로 for문을 돌려서 true인 경우를 찾지 않고 i의 배수를 지우는 과정에서 같이 카운팅해도 된다.
'알고리즘 > C++' 카테고리의 다른 글
[C++] 공주 구하기 (조세퍼스) Queue 이용 (0) | 2020.02.28 |
---|---|
[C++] DFS 인접리스트 최소비용 (pair, vector) (0) | 2020.02.27 |
[C++] 프로그래머스 서울에서 김서방 찾기 (5) | 2020.02.26 |
[C++] 프로그래머스 문자열 내 p와 y의 개수 (0) | 2020.02.26 |
[C++] 프로그래머스 문자열 내 마음대로 정렬하기 (0) | 2020.02.26 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- iOS 화면 안나옴
- pythonanywhere배포
- iOS 검은 화면
- django 게시판
- 실시간 데이터베이스
- 장고 태그달기
- 알파벳 카운팅
- cleaned_data
- python 웹 배포
- django 태그
- 장고 게시판
- 웹 배포
- CellForRowAt 호출안됨
- iOS UITableView 출력안됨
- 까만 화면
- Realtime Database
- 테이블출력안됨
- 데이터베이스 추천
- django pythoneverywhere
- pythonanywhere배포방법
- iOS 데이터베이스
- Firebase 데이터베이스 추천
- django 로그인접근
- UITableViewController Not Working
- django 개발일지
- Django
- CellForRowAt Not Called
- django clean
- ModelForm Form 차이
- django tag
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함