""" 1번: 나의 풀이 """
def solution(n):
return prime_list(n)
def prime_list(n):
prime_nums = [True] * (n+1)
m = int(n ** 0.5)
for i in range(2, m+1):
if prime_nums[i]:
for j in range(i+i, n+1, i):
prime_nums[j] = False
return len([i for i in range(2, n+1) if prime_nums[i]])
""" 2번: 다른 사람의 풀이(차집합 이용) """
def solution2(n):
nums = set(range(2, n+1))
for x in range(2, n+1):
if x in nums:
nums -= set(range(2*x, n+1, x))
return len(nums)
- 확인하기:
- set으로 간단하게 구현할 수도 있다! (하지만 성능은 다소 떨어진다. 여유 있을 때 활용하자!)
'> 알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
lv1-3진법 뒤집기 (python, 파이썬) (0) | 2020.10.22 |
---|---|
lv1-예산 (python, 파이썬) (0) | 2020.10.22 |
lv1-2016년 (python, 파이썬) (0) | 2020.10.22 |
lv1-두 개 뽑아서 더하기 (python, 파이썬) (0) | 2020.10.22 |
lv1-문자열 내의 p와 y의 개수 (python, 파이썬) (0) | 2020.10.22 |
댓글