반응형
목차
문제
Given an integer n, return true if it is a power of three. Otherwise, return false.
An integer n is a power of three, if there exists an integer x such that n == 3x.
Example 1:
Input: n = 27
Output: true
Explanation: 27 = 33
Example 2:
Input: n = 0
Output: false
Explanation: There is no x where 3x = 0.
Example 3:
Input: n = -1
Output: false
Explanation: There is no x where 3x = (-1).
Constraints:
- -2^31 <= n <= 2^31 - 1
Follow up: Could you solve it without loops/recursion?
아이디어
루프나 재귀를 사용하지 않으려면, 제곱수에 대한 근본적인 이해를 바탕으로 문제를 해결한다.
정수 a가 b보다 클때, 3^a는 3^b로 항상 나누어지는점을 활용한다.
풀이
class Solution {
static int maxPow3 = (int) Math.pow(3, 19);
public boolean isPowerOfThree(int n) {
// 3^19 =1162261467,
// 3^20 는 정수 범위를 초과한다.
return ( n>0 && maxPow3%n==0);
}
}
//재귀함수를 사용한 풀이
class Solution {
public boolean isPowerOfThree(int n) {
if(n==1){
return true;
}
if(n==0 || n%3!= 0){
return false;
}
return isPowerOfThree(n/3);
}
}
반응형
'코딩테스트 > 알고리즘 문제풀이' 카테고리의 다른 글
[JAVA] 가장 큰 수 (0) | 2022.11.12 |
---|---|
[JAVA] K번째수 (0) | 2022.11.11 |
[JAVA] 409. Longest Palindrome (0) | 2022.11.08 |
[JAVA] 121. Best Time to Buy and Sell Stock (0) | 2022.11.08 |
[JAVA] 다음에 올 숫자 (0) | 2022.11.07 |
댓글