반응형
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
제한 조건
- n은 2이상 1000000이하의 자연수입니다.
입출력 예
n | result |
10 | 4 |
5 | 3 |
입출력 예 설명
입출력 예 #1
1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환
입출력 예 #2
1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환
풀이1(JavaScript). 배열 사용
// 소수 구하기: 에라토스테네스의 체
function PrimeNumber(n) {
let arr = [];
for (let i = 2; i <= n; i++) {
arr[i] = i;
}
for (let i = 2; i <= n; i++) {
if (arr[i === 0]) continue;
for (let j = i + i; j <= n; j += i) {
arr[j] = 0;
}
}
let answer = [];
for (let i = 0; i <= n; i++) {
if (arr[i] !== 0 && arr[i] !== undefined) {
answer.push(i);
}
}
return answer;
}
function solution(n) {
let count = PrimeNumber(n).length;
return count;
}
// test
solution(100);
solution(1000);
solution(10000);
solution(100000);
풀이2(JavaScript). Set 사용
// 소수 구하기: 에라토스테네스의 체
function useSet(n) {
const set = new Set();
for (let i = 2; i <= n; i++) {
set.add(i);
}
for (let i = 2; i <= n; i++) {
for (let j = 2 * i; j <= n; j += i) {
set.delete(j);
}
}
return set;
}
function solution(n) {
let count = useSet(n).size;
return count;
}
// test
solution(100);
solution(1000);
solution(10000);
solution(100000);
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Level 2][스택/큐] 프린터(JavaScript) (0) | 2020.04.01 |
---|---|
[Level 2][스택/큐] 탑(JavaScript) (0) | 2020.04.01 |
[Level 1][카카오] 비밀지도(JavaScript) (0) | 2020.03.27 |
[Level 1] 예산(JavaScript) (0) | 2020.03.27 |
[Level 1] 직사각형 별찍기(JavaScript) (0) | 2020.03.27 |
댓글