문제 설명
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.
소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)
제한 조건
- n은 2이상 1000000이하의 자연수입니다.
입출력 예
n | result |
10 | 4 |
5 | 3 |
입출력 예 #1
1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환
입출력 예 #2
1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12921
코딩테스트 연습 - 소수 찾기
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상
programmers.co.kr
풀이
아래 코드처럼 직관적으로 짜니깐 시간초과
def solution(n):
answer = 0
for i in range(2, n+1):
for j in range(2, i):
if i % j ==0 :
break
else:
answer += 1
return answer
'에라토스테네스의 체(Sieve of Eratosthenes)' 방법 사용. 대용량의 소수 판별 시 사용되는 방법
2부터 시작해서, 2의 배수 제거 -> 3의 배수 제거 ..... 방식
def solution(n):
answer = 0
num = set(range(2,n+1))
for i in range(2,n+1):
if i in num:
num -= set(range(2*i, n+1, i))
return len(num)
'개발 > algorithm' 카테고리의 다른 글
[프로그래머스][level 1] 같은 숫자는 싫어 - python (0) | 2021.12.07 |
---|---|
[프로그래머스] [level 1] 가운데 글자 가져오기 - python (0) | 2021.12.07 |
[프로그래머스][level 1] 문자열 내 마음대로 정렬하기 - python (0) | 2021.12.07 |
[프로그래머스][level 1] 이상한 문자 만들기 - python (0) | 2021.12.07 |
[프로그래머스][ level 1] 서울에서 김서방 찾기 - python (0) | 2021.12.07 |