티스토리 뷰
728x90
SMALL
풀이
첫번째 시도 시간초과로 실패했다
짝수 홀수로만 나눴는데 이정도로는 부족한가보다. 그래서 소수의 배수를 아얘 제외해야겠다는 생각을 했다.
짝수 홀수도 애초에 소수인 2로 나눈것이기 때문에 똑같은 원리를 좀 더 효율적으로 쓰겠다는 것이다.
function solution(n) {
let answer = 1;
const pri=(num)=>{
for(let i=3;i<num;i=i+2){
if(num%i===0){
return;
}
}
return answer++;
}
for(let i=3;i<=n;i=i+2){
pri(i)
}
return answer;
}
올바른 풀이
function solution(n) {
let answer = 0;
let arr = [];
for(let i=2;i<=n;i++){
arr[i]=1;
}
for(let i=2;i<=n;i++){
if(arr[i]===0);
else{
for(let j=i*2;j<=n;j+=i){
arr[j]=0;
}
}
}
for (let i=2;i<=n;i++) {
if (arr[i]!==0){
answer++;
}
}
return answer;
}
728x90
LIST
'코딩테스트' 카테고리의 다른 글
코딩테스트 연습 > 연습문제 > 이상한 문자 만들기 (0) | 2020.07.08 |
---|---|
코딩테스트연습 > 연습문제 > 약수의 합 (0) | 2020.07.08 |
코딩테스트연습 > 연습문제 > 시저 암호 (0) | 2020.07.06 |
코딩테스트연습 > 연습문제 > 문자열을 정수로 바꾸기 (0) | 2020.07.04 |
코딩테스트연습 > 연습문제 > 수박수박수박수박수박수? (0) | 2020.07.04 |
댓글
공지사항