320x100
https://leetcode.com/problems/powx-n/
실수d 와 제곱수n 를 받았을 때 pow(d,n)을 구하는 문제다.
단순히 d를 n번 곱셈하는게 제일 쉽겠지만, 그 안에서 반복되는 횟수를 줄여야 한다.
10번 처리할거 5번으로 줄이는 방식으로 2를 나누어 2배수로 처리한다.
더 큰 배수로 처리해도 되지만 예외처리가 그만큼 늘어날 수 있다.
제곱수n은 정수이므로 2로 나누었을 때 나머지가 버림 처리 된다.
그 나머지가 발생할 때는 결과 ret에 미리 계산을 해주어야 버려지는 값도 같이 계산할 수 있다.
class Solution {
public:
double myPow(double x, int n) {
double ret = 1.0;
while (n)
{
if (n & 0x1) {
n > 0 ? ret *= x : ret /= x;
}
x *= x;
n /= 2;
}
return ret;
}
};
320x100
'코딩테스트 준비 > leetcode' 카테고리의 다른 글
118. Pascal's Triangle (0) | 2021.08.08 |
---|---|
1. Two Sum (0) | 2021.08.07 |
49. Group Anagrams (0) | 2021.08.07 |
53. Maximum Subarray (0) | 2021.08.06 |
35. Search Insert Position (0) | 2021.08.06 |