CodeWars 서른 여섯 번째 문제

Updated:

Playing with digits

public static long digPow(int n, int p) {
    int copyN = n;
    long sum = 0;

    for(int i = (int)(Math.log10(n))+p; i > 0 ; i--) {
        sum += Math.pow(n % 10, i);
        n = n / 10;
    }

    if(sum % copyN == 0) {
        return sum/copyN;
    }

    return -1;
}
  • 문제에 수식이 잘 나와 있어서 적용하는데 어렵지 않았다.
  • 단지 n을 자릿수 마다 끊을 때 일의 자리부터 시작하는데 이때 제곱하는 수가 주어진 p로 시작이 아닌 p+자릿수크기의 -1 부터 시작한 다는 것이 for의 조건이 복잡하게 된 계기였다.