hani:) 2023. 6. 21. 13:27

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12921

 

프로그래머스

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

programmers.co.kr

 

문제 풀이

풀이1. 짝수 값 포함되어 있을 때

function isPrime(num) {
    // 짝수에 대한 처리
    if (num % 2 === 0) {
        return num === 2 ? true : false;
    }

    // 짝수에 대한 처리
    for (let i=3; i <= Math.floor(Math.sqrt(num)); i+=2) {
        if (num % i === 0) return false;
    } 
    return true;
}

function solution(n) {
    let count = 0; // 1) 소수 개수를 관리할 변수 선인 및 할당
    
    // for문 사용하여 2부터 n까지 숫자를 하나씩 증감시켜 확인 (1은 소수가 아니기 때문에 2부터 시작)
    for (let i=2; i <= n; i++) {
        if (isPrime(i)) count++;
    }
    return count;
}

 

풀이2. 홀수 값만 있을 때

function isPrime(num) {
    for (let i=3; i <= Math.floor(Math.sqrt(num)); i+=2) {
        if (num % i === 0) return false;
    } 
    return true;
}

function solution(n) {
    let count = 1; // 1) 변수 선언 및 할당: 2일 때는 소수이기 때문에 무조건 +1을 해준 상태에서 시작
    
    // 2) for 사용, 2를 제외한 짝수는 소수가 아니기 때문에 홀수에 대해서만 확인할 예정
	// 그래서 i는 3부터 시작하고 +2씩 증가시켜서 확인
    for (let i=3; i <= n; i+=2) {
        if (isPrime(i)) count++; // 소수인 경우 증감
    }
    return count;
}

 

 

 

728x90