본문 바로가기
Algorithm/Programers

프로그래머스 숫자 블록 javascript

by eclipse7727 2022. 9. 3.
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

소수를 구하는 문제이다.

그렙시는 길이가 1,000,000,000인  도로에 1번 블록부터 시작하여 "10,000,000"번 블록까지 구하는 문제이다.

 

 "10,000,000"번 블록까지 구하는 것이기에

"10,000,000" 블록을 넘어가는 수에 대해서는 연산하지 않으면 된다.

해당 부분이 없으면 효율성에서 에러가 났다.

function solution(begin, end) {
    const answer = [];
    const isPrime = (i) =>{
        const sqrt = Math.sqrt(i);
        for(let j = 2 ; j < sqrt+1; j++){
                // 제곱근으로 쓰면 a*b === b*a 반대측도 구할 수 있음.
                const temp = (i / j) >> 0;
                if(temp > 10000000){ // 1번 블록부터 시작하여 "10,000,000"번 블록까지
                    continue;
                }
                if(i % j == 0){
                    answer.push(temp)
                    return;                    
                }
        }
        answer.push(1);
    }

    for(let i = +begin; i <= +end; i++){
        if(i === 1){
            answer.push(0);
        }
        else{
            isPrime(i);
        }
    }
    return answer
}
반응형

댓글