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까시 설정하는 것이 옳다.