[νλ‘κ·Έλλ¨Έμ€] μ°μ΅λ¬Έμ Lv1. μμ μ°ΎκΈ° (Python/νμ΄μ¬)
[νλ‘κ·Έλλ¨Έμ€ μ½λ©ν μ€νΈ μ°μ΅] μ°μ΅λ¬Έμ - Lv1. μμ μ°ΎκΈ°
μ½λ©ν μ€νΈ μ°μ΅ - μμ μ°ΎκΈ°
1λΆν° μ λ ₯λ°μ μ«μ n μ¬μ΄μ μλ μμμ κ°μλ₯Ό λ°ννλ ν¨μ, solutionμ λ§λ€μ΄ 보μΈμ. μμλ 1κ³Ό μκΈ° μμ μΌλ‘λ§ λλμ΄μ§λ μλ₯Ό μλ―Έν©λλ€. (1μ μμκ° μλλλ€.) μ ν 쑰건 nμ 2μ΄μ
programmers.co.kr
λ¬Έμ μ€λͺ
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λ₯Ό λ°ν
μ μΆ
- 'μλΌν μ€ν λ€μ€μ 체' μ¬μ©
- import math ν΄μ math.sqrt()λ₯Ό μ¬μ©νλ λμ ** 0.5 μ¬μ©
[Algorithm] μλΌν μ€ν λ€μ€μ 체 - μμ ꡬνκΈ° (λ²μ)
μλΌν μ€ν λ€μ€μ 체λ? κ³ λ 그리μ€μ μνμ μλΌν μ€ν λ€μ€κ° λ§λ€μ΄ λΈ μμλ₯Ό μ°Ύλ λ°©λ²μ΄λ©° μ΄ λ°©λ²μ λ§μΉ μ²΄λ‘ μΉλ―μ΄ μλ₯Ό κ±Έλ¬λΈλ€κ³ νμ¬ 'μλΌν μ€ν λ€μ€μ 체'λΌκ³ λΆλ¦ λλ€. νΉ
coding-factory.tistory.com
def solution(n):
# μλΌν μ€ν
λ€μ€μ 체 μ΄κΈ°ν: nκ° μμμ True μ€μ (μμλ‘ κ°μ£Ό)
sieve = [True] * (n + 1)
answer = 0
# nμ μ΅λ μ½μκ° sqrt(n) μ΄νμ΄λ―λ‘ i=sqrt(n)κΉμ§ κ²μ¬
m = int(n ** 0.5)
for i in range(2, m + 1):
if sieve[i] == True: # iκ° μμμΈ κ²½μ°
for j in range(i + i, n + 1, i): # iμ΄ν iμ λ°°μλ€μ False νμ
sieve[j] = False
# μμ λͺ©λ‘ μ°μΆ
return len([i for i in range(2, n + 1) if sieve[i] == True])
λ€λ₯Έμ¬λμ νμ΄
- μλΌν μ€ν λ€μ€μ 체λ₯Ό λμ± κ°λ¨νκ² μμ±νμλ€
def solution(n):
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)