프로그래머스 - 소수 찾기 <Level 1>
2024. 1. 26. 16:33ㆍ알고리즘_생각하기/프로그래머스 Level 1
*핵심 키워드 : 에라토스테네스의 체*
문제 설명
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
- n은 2이상 1000000이하의 자연수입니다.
10 | 4 |
5 | 3 |
입출력 예 #1
1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환
입출력 예 #2
1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환
풀이
사용 언어 : C++
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 0;
vector<bool> v(n + 1, 1);
for (int i = 2; i * i <= n; i++)
{
if (v[i])
{
for (int k = i * i; k <= n; k += i)
{
v[k] = 0;
}
}
}
for (int i = 2; i < v.size(); i++)
{
if(v[i]) answer++;
}
return answer;
}
'알고리즘_생각하기 > 프로그래머스 Level 1' 카테고리의 다른 글
프로그래머스 - 둘만의 암호 <Level 1> (1) | 2024.01.31 |
---|---|
프로그래머스 - 숫자 문자열과 영단어 <Level 1> (1) | 2024.01.29 |
프로그래머스 - 문자열 내 마음대로 정렬하기 <Level 1> (0) | 2024.01.26 |
프로그래머스 - 크기가 작은 부분 문자열 <Level 1> (1) | 2024.01.26 |
프로그래머스 - 약수의 개수와 덧셈 <Level 1> (0) | 2024.01.26 |