22.9.28

커피 내리는 그냥 사람·2022년 9월 28일
0

항해99

목록 보기
19/108

챌린지스 챌린지

47. 소수 찾기

효율성에서 시간초과 난 코드. 일반 테스트에서는 통과했는데..

function solution(n) {
    var answer = 0;
    let temp = []
    // 임시 temp array 만듦
    for(let i = 2; i <=n; i++){
        temp.push(i)
    }
    // 임시로 2~n까지 array
    let primeArr = temp.filter((number) => {
        // fiilter를 통해 primeNumber 걸러줄 예정
        for (let j=2; j<=Math.sqrt(number); j++){
            if (number % j === 0) return false
            // 소수면 true 아니면 false로 새로운 배열 만듦
        }
        return true
    })
    answer = primeArr.length
    // 배열의 길이를 answer로 만듦
    return answer;
}

복잡할 것 없이 바로 함수 하나 더 만들어서 하면 됐었다.

// 소수인지 판별하는 함수
function isPrime(x) {
  for (let i = 2; i <= Math.sqrt(x); i++) {
    if (x % i === 0) return false;
  }
  return true;
}

function solution(n) {
  // 소수의 개수를 저장할 변수
  let answer = 0;
  // 1은 소수가 아니므로 2부터 n까지 모든 수에 대해
  for (let i = 2; i <= n; i++) {
    // 소수이면 소수의 개수에 1 추가
    if (isPrime(i)) answer++;
  }
  return answer;
}

참고블로그

그 이후는 어려워서 안 되겠다. 끝.

profile
커피 내리고 향 맡는거 좋아해요. 이것 저것 공부합니다.

0개의 댓글