코딩테스트/알고리즘 문제풀이

[JAVA] 326. Power of Three

지과쌤 2022. 11. 9.
반응형

목차

    문제

    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

    댓글

    💲 추천 글