주어진 인수가 3의 제곱수인지 확인하는 문제입니다.
https://leetcode.com/problems/power-of-three
//problem no : 326
class Solution {
public:
bool isPowerOfThree(int n) {
if(n<1) return false;
while(n%3 == 0){
n/=3;
}
return n == 1;
}
};
class Solution {
public:
bool isPowerOfThree(int n) {
if(!n) return false;
double a = log10(n)/log10(3);
return floor(a) == a;
}
};
처음에는 1에서부터 3을 곱해가면서 찾았는데, 오버플로우나 알고리즘 면에서 직관적이지 않아서 while문으로 푼 후, 다른 풀이를 보았는데, log를 활용한 풀이가 있어서 놀랐습니다.