티스토리 뷰
다이나믹 프로그래밍
재귀적 호출을 power(x, y - 1) 대신 power(x, y // 2) 로 바꿔줌으로써
시간복잡도를 O(n)에서 O(lgn) 으로 줄일 수 있다.
홀수와 짝수를 나누어서 계산한다.
# 시간복잡도 O(n)
def power(x, y):
if y == 0:
return 1
return power(x, y - 1) * x
# 시간복잡도 O(lgn)
def power(x, y):
if y == 0:
return 1
# 계산을 한 번만 하기 위해서 변수에 저장
subresult = power(x, y // 2)
# 문제를 최대한 똑같은 크기의 문제 두 개로 나눈다.
if y % 2 == 0:
return subresult * subresult
else:
return x * subresult * subresult
# y가 8이면 4번, y가 32면 6번 호출, 즉 lg y + 1번 호출
#테스트
print(power(3, 5))
print(power(5, 6))
print(power(7, 9))
'Algorithm' 카테고리의 다른 글
[SWEA] 2105. [모의 SW 역량테스트] 디저트 카페 (0) | 2021.10.13 |
---|---|
[SWEA] 4012. [모의 SW 역량테스트] 요리사 (211012) (0) | 2021.10.12 |
[1-1][Brute Force] 투자귀재 규식이1 (0) | 2021.10.12 |
[DP] 피보나치 수열 메모이제이션 (0) | 2021.10.12 |
[Programmers][stack/queue] 기능개발 python (211012) (0) | 2021.10.12 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 클린코드
- 개발언어추천
- 개발자로드맵
- 개발자커리
- 맥과윈도우로깃허브
- 무료폰트추천
- 깃허브계정2개
- 클린코더
- 폰트
- intj여자
- ssafy합격후기
- 싸피
- 개발자도서추천
- 브왈라
- 개발자
- 개발언어순위
- ssafy6기
- 디즈니얼굴
- 상업용무료폰트
- ssafy결과
- 개발자책추천
- 싸피6기
- 코딩도서
- 개발도서추천
- 깃허브계정
- 폰트추천
- 임대차3법
- ssafy후기
- 한글무료폰트추천
- SSAFY
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함