문제 출처:https://leetcode.com/problems/power-of-four/
이 문제는 input으로 주어진 숫자가 ${4^x}로 표현이 되는지 안되는지에 따라 true, false를 출력하는 문제입니다. 저는 이 문제를 재귀적으로 접근했습니다.
- num이 1이면, true
- num이 0이면, false
- num을 4로 나눈 나머지가 0이 아니라면, false
- 조금 빠른 연산을 위해서 비트연산자를 사용했습니다.
더보기
(n & 3) => n % 4 - 4로 나눈 나머지
n >> 2 => n / 4
코드는 다음과 같습니다:
class Solution {
public:
bool isPowerOfFour(int n) {
if(n == 1)
return true ;
else if(n == 0 || (n & 3) != 0)
return false ;
else
return isPowerOfFour(n >> 2) ;
}
};
비트연산자로 빠른 결과를 얻을 수 있었습니다.
해당 문제는 Github에서도 보실 수 있습니다:
https://github.com/gurcks8989/CodingTest/blob/master/LeetCode/P342_Power_of_Four.cpp
훈수 및 조언은 언제든 환영입니다.