CodeWars 스물 아홉 번째 문제

Updated:

What’s a Perfect Power anyway?

public static int[] isPerfectPower(int n) {

    for(int i = 2; i <= (int)Math.sqrt(n); i++) {
        int j = 2;
        int powNumber = 0;

        do {
            powNumber = (int)Math.pow(i, j);

            if(powNumber == n) {
                return new int[] {i,j};
            }

            j++;

        } while(powNumber <= n);
    }

    return null;
}
  • Best 코드는 for문을 한 번 사용했는데.. 대신 이해가 안가는 수식들을 사용했다.
  • 그래도 다음 Best 코드는 나랑 같은 알고리즘이었다.
  • 어렵지 않은 알고리즘이다. 단지 생각 해 볼 것은 첫 번째 반복문에서 i의 제한 조건을 어디까지 할 것인가 인데, i가 가장 클 수 있는 조건은 n의 제곱근 까지이다. 예를 들어 81일때 81의 제곱근은 9이다. 10부터는 10 제곱근은 100이므로 81보다 크기 때문에 i는 2부터 9까시 설정하는 것이 옳다.