제곱 계산은 의 형식을 형태이다.
본 포스팅에서는 b가 자연수인 경우 제곱 계산을 다루므로 으로 표기하겠다.
파이썬에서 제곱 계산은
pow(a, n)
함수를 사용하거나,a**n
연산을 사용하면 된다.이제 power함수를 구현해보자.
1. n번 곱하기
def power(a, n):
ret = 1
for i in range(n):
ret *= a
return ret
print(power(5, 5))
print(power(5, 21))
1에다가 a를 n번 곱한다.
시간복잡도는 O(N)
2. 의 power 함수
def power(a, n):
ret = 1
while n > 0:
if n % 2 != 0:
ret *= a
a *= a
n //= 2
return ret
print(power(5, 5))
print(power(5, 21))
임을 활용하여 계산하는 방법이다.
n을 제곱해나가면서 계산하므로 시간복잡도는 O(logN)이다.
'아카이빙' 카테고리의 다른 글
Python으로 알고리즘 공부 11. 최장 공통 부분 수열 (0) | 2017.07.14 |
---|---|
Python으로 알고리즘 공부 10. 연쇄행렬 최소곱셈 알고리즘 (0) | 2017.07.14 |
Python으로 알고리즘 공부 08. 최대공약수, 최소공배수 알고리즘 (2) | 2017.07.08 |
Python으로 알고리즘 공부 07. 중위표기법(Infix)를 후위표기법(Postfix)로 변환 (2) | 2017.07.07 |
Python으로 알고리즘 공부 06. 소수 (Prime number) (0) | 2017.07.05 |