logN의 시간복잡도를 가지려면 문제의 크기가 절반씩 줄어들어야 한다.
그렇다면 문제의 크기를 절반 씩 줄이는 것에 목표를 두자.
power(3,5)라면, power(3,2) * power(3,2) * power(3,1) -> power(3,1)*power(3,1)*power(3,1)*power(3,1)*power(3,1)
원래라면 5의 시간복잡도가 3이 됐다.
즉 y값에 따라서 문제의 크기를 절반씩 줄여주면 된다.
def power(x, y):
if y == 0:
return 1
if y % 2 == 0:
return power(x, y//2)*power(x,y//2)
else:
return power(x,y//2)*power(x,y//2)*x
2021-11-20
'알고리즘 > 문제 풀이' 카테고리의 다른 글
2021-11-20 중복되는 항목 찾기 (0) | 2021.11.20 |
---|---|
2021-11-20 탈수 방지 등산 (0) | 2021.11.20 |
2021-11-20 투자구간에서 최대수익 (0) | 2021.11.20 |
2021-10-09 빈 공간에 물 채우기 반영환 (0) | 2021.10.11 |
2021-10-09 가장 가까운 거리 구하기 반영환 (0) | 2021.10.11 |