2019๋ 2์ 14์ผ
์ถ์ฒ: https://programmers.co.kr/learn/courses/30/lessons/12928?language=python3#
์์ฐ์ n์ ์ ๋ ฅ๋ฐ์ n์ ์ฝ์๋ฅผ ๋ชจ๋ ๋ํ ๊ฐ์ ๋ฆฌํดํ๋ ํจ์, solution์ ์์ฑํด์ฃผ์ธ์.
- n์ 0 ์ด์ 3000์ดํ์ธ ์์ฐ์์ ๋๋ค.
def sum_divisor(n):
sum = 0
for i in range(1,n+1):
if n%i == 0:
sum += i
return sum
import math
def sum_divisor2(n):
sum = 0
mid = int(math.sqrt(n))
for i in range(1, mid+1):
if n % i == 0:
if i*i == n: # i์ ๊ณฑ์ด n์ผ ๊ฒฝ์ฐ๋ ํ ๋ฒ๋ง ๋ํด์ค์ผ ํ๋ค. (ex. 25์ ์ฝ์: 1, 5 ,25)
sum += i
else:
sum += i + n/i
return int(sum)
- ์ฝ์์ ํน์ฑ: n=a*b (๋จ, a <= b)
- ์ฝ์ a,b๋ ์์ผ๋ก ์กด์ฌํ๋ค.
- a,b๋ ๋ฐ๋น๋ก ๊ด๊ณ์ด๋ค.
- a์ ์ต๋๊ฐ์ a == b ์ผ ๋ ์ด๋ค.
- ๋ฐ๋ผ์ ์ฝ์๋ฅผ ๊ตฌํ ๋ a == b ์ผ๋ ๊น์ง๋ง ๊ตฌํ๋ฉด ๋๋ค.(์ฆ, n = a*a ๊ฐ ๋๋ ์์ )
- ์ฌ์ด ํ์ด์ ํจ์จ์ ์ธ ํ์ด๊ฐ ์๋ค. ๋ณดํต ์ฌ์ด ํ์ด๊ฐ ๋จผ์ ๋ ์ฌ๋ผ ๊ทธ๋ ๊ฒ ํ๊ฒ ๋๋ค.
- ํ์๋ค๊ณ ๊ทธ๋ฅ ๋์ด๊ฐ์ง ๋ง๊ณ ์ข ๋ ํจ์จ์ ์ธ ํ์ด๊ฐ ์๋์ง ๊ณ ๋ฏผํ์.