์์ ์ฐพ๊ธฐ lv2
๐๋ฌธ์ ๋งํฌ
1
2
3
4
์ ๊น!
์์๋?
1๊ณผ ์๊ธฐ ์์ ์ผ๋ก ๋๋์ด์ง๋ ์ ex) 2, 5, 19
(1์ 1๋ฐ์ ์์ด์ ์๋จ)
โโโโโโ-ํ์ด 2๊ฐ โโโโโโโโ
1. ์๋ผํ ์คํ ๋ค์ค์ ์ฒด
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def solution(n):
answer=0
array=[True for i in range(n+1)]
for i in range(2,int(n**(1/2))+1):
if array[i]==True:
j = 2
while i * j <= n:
array[i*j] = False
j += 1
for i in range(2,n+1):
if array[i]:
answer+=1
return answer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<ํน์ global์ ์จ์ ํ๋ ๋ฐฉ๋ฒ>
answer = 0
def solution(n):
global answer
array=[True for i in range(n+1)]
for i in range(2,int(n**(1/2))+1):
if array[i]==True:
j = 2
while i * j <= n:
array[i*j] = False
j += 1
for i in range(2,n+1):
if array[i]:
answer+=1
return answer
<ํ์ด 1>
def solution(n):
answer=0 array=[True for i in range(n+1)]
- answer 0์ผ๋ก ์ด๊ธฐํ
- array๋ผ๋ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ์ฌ ๋ฆฌ์คํธ์ ๊ธธ์ด๋ n+1, ๊ฐ ์์๋ True๋ก ์ค์
- โ> ์ง์ ๋ ๋ฒ์ ๋ด์์ ๊ฐ i ๊ฐ์ ๋ํด True ์์ฑ
for i in range(2,int(n**(1/2))+1):
if array[i]==True:
j = 2
while i * j <= n:
โ ์ด๋ฏธ ์์ array ๋ฐฐ์ด์ ์์๋ฅผ ๋ชจ๋ True๋ก ๋ฐ๊ธฐ๋ก ์ค์ ํจ
- range(2, ~) โ> ์์์ด๊ธฐ๋ํ๊ณ ์์ ๋ฌธ์ ์ ํ ์กฐ๊ฑด์์ n์ 2 ~ 1000000 ์ดํ ์์ฐ์
- i์ ๋ฒ์ โ> 2 ~ n์ ์ ๊ณฑ๊ทผ
- ๋ง์ฝ i๊ฐ ์์๊ฐ True๋ฉด
j๋ 2์์ ์์ํ๊ณ , while๋ฌธ์ ๋ฐ๋ณตํ๋ค โ> ์ j=2 ๋๋ฉด j๊ฐ 1์ด๋ฉด
i*j
๊ฐ ์์๊ฐ ๋ ๊ฒฝ์ฐ๊ฐ..- i์ j๋ฅผ ๊ณฑํด์ n์ดํ๊น์ง ๋ฐ๋ณต
array[i*j] = False j += 1
- ์์๊ฐ ์๋๋ผ์ False๋ก ์ค์
- j๋ฅผ 1์ฉ ์ฆ๊ฐ์ํด์ผ๋ก์จ, i์ ๋ฐฐ์์ ๋ํด ๊ณ์ํด์ array ๊ฐ์ False
for i in range(2,n+1):
if array[i]: answer += 1
- ์ฐธ๊ณ โ>
if array[i]:
==if array[i] == True
- ๋จ์์๋ ์ซ์๋ค(True๊ฐ์ธ ๊ฒ๋ค๋ง) ๊ฐ์๋ฅผ ์ธ์ค๋ค.
return answer
def solution(n) ํจ์ ๋ด์ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ
2. ์๊ฐ ์ก์๋จน๋ ์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-----------------------------------------------------
# ์๊ฐ ์ก์๋จน๋ ์ฝ๋
-----------------------------------------------------
import math
def isPrime(n):
for i in range(2, int(math.sqrt(n))+1):
if n % i == 0:
return False
return True
def solution(n):
answer = 0
for i in range(2, n+1):
if isPrime(i) == True:
answer += 1
return answer
<ํ์ด>ํ์ด>
import math
math๋ฅผ importํด์ n ** (1/2) ์์จ๋ ๋๋ค.
for i in range(2, int(math.sqrt(n))+1):
- i์ ๋ฒ์: 2 ~ n์ ์ ๊ณฑ๊ทผ
- ์ ๊น! ex) range(i, n) โ>
i
์์n-1
๊น์ง ๊ทธ๋์ +1์ ํด์ค ๊ฒ์ด๋ค.
1 2
`if n % i == 0: return False`
- ๋ง์ฝ n์ i๋ก ๋๋ด์ ๋, ๋๋จธ์ง๊ฐ 0์ด๋?
- ๊ทธ๋ผ ์์๊ฐ ์๋๋, ๋น์ฐ์ด False ๋ฐํ
return True
for ๋ฌธ์ ๋ํด True๋ฐํ
def solution(n):
answer = 0 for i in range(2, n+1):
- answer์ 0์ผ๋ก ์ด๊ธฐํ
- i์ ๋ฒ์ โ> 2 ~ n
if isPrime(i) == True: answer += 1 return answer
- ๊ฐ ์ i์ ๋ํด isprime ํจ์๋ฅผ ํธ์ถํ์ฌ ํ์ธ(์์๊ฐ True์ธ๊ฐ?)
- ์์๊ฐ ๋ง๋ค๋ฉด answer์ 1์ฉ ๋์ ์ ๋ฆฝ
- for๋ฌธ i์ ๋ฒ์ 2~n์ ๋ํด answer ๋ฐํ
๋ฐฐ์ด ๊ฒ
This post is licensed under CC BY 4.0 by the author.