본문 바로가기
프로그래머스/lv.1

소수 찾기

by bingual 2024. 1. 23.
반응형


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

 

프로그래머스

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

programmers.co.kr

문제풀이

기사 단원 문제와 마찬가지로 에라스토테네스의 체 알고리즘을 응용했다. lv.1 이기 때문에 제곱근 이하의 범위에서만 확인해도 통과가 가능하다만 주어진 시간이 10초고 n이 100만이 아닌 1억까지 주어졌을때 제곱근을 이용한 방법만으로는 시간 초과가 날것이다. 

def solution(n):
    answer = 0

    # 1은 소수가 아니라 0 반환
    if n < 2:
        return answer

    primes = [True] * (n + 1)
    primes[0] = primes[1] = False  # 0, 1은 소수가 아니므로 제거

    # 제곱근 이하의 범위에서만 확인
    for i in range(2, int(n**0.5) + 1):
        if primes[i]:
            for j in range(i * i, n + 1, i):
                primes[j] = False  # i의 배수들을 소수에서 제외

    # 소수의 개수 반환
    answer = sum(primes)
    return answer

 

 

'프로그래머스 > lv.1' 카테고리의 다른 글

옹알이 (2)  (1) 2024.01.25
실패율  (1) 2024.01.25
기사단원의 무기  (0) 2024.01.23
소수 만들기  (0) 2024.01.23
모의고사  (0) 2024.01.23