[lv0] 합성수 찾기

발밤발밤·2024년 10월 18일
0

Test

목록 보기
33/34

문제 링크

  • 합성수 : 약수의 개수가 세 개 이상인 수
  • 자연수 n 이하의 합성수의 개수 return
function solution(n) {
    const result = []
    for(let i = 4; i<=n; i+=2){
        result.push(i)
    }
    for(let i = 9; i<=n; i+=3){
        result.push(i)
    }
    return [...new Set(result)].length
}
  • 처음 작성한 코드.
    • 입출력 예) 로 나온 예시가 2와 3의 배수로 되어있어 해당 코드로 작성.
    • 코드 실행은 무사히 통과했으나 제출 후 채점에서 1번과 5번 케이스에 오류 발생.
    • 예를 들어 49 의 경우 2와 3의 배수는 아니지만 7의 배수이기 때문에 해당 함수로 잡아낼 수 없음.
function solution(n) {
    let count = 0;
    for (let i = 4; i <= n; i++) {
        for (let j = 2; j * j <= i; j++) {
            if (i % j === 0) {
                count++;
                break;
            }
        }
    }

    return count;
}

다른 사람의 풀이

function solution(n) {
    let base = Array.from(Array(n), (v,i) => i+1)
    for(let i = 2; i <= parseInt(Math.sqrt(n)); i++) {
        base = base.filter(el => el%i != 0 || el <= i)
    }
    return n - base.length
}

0개의 댓글