Post

์†Œ์ˆ˜ ์ฐพ๊ธฐ lv2

๐ŸŒˆ๋ฌธ์ œ ๋งํฌ

Desktop View

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 ๋ฐ˜ํ™˜

๋ฐฐ์šด ๊ฒƒ

Desktop View

This post is licensed under CC BY 4.0 by the author.
3D GIF