코딩테스트 준비/leetcode

50. Pow(x, n)

MAKGA 2021. 8. 7. 13:43
320x100

https://leetcode.com/problems/powx-n/

 

Pow(x, n) - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

실수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