문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
n | return |
---|---|
121 | 144 |
3 | -1 |
class Solution {
public long solution(long n) {
long answer = 0;
return answer;
}
}
class Solution {
public long solution(long n) {
long answer = 0;
long a = (long)Math.sqrt(n);
if(Math.pow(a,2)==n)
answer = (long)Math.pow(a+1,2);
else
answer = -1;
return answer;
}
}
솔직히.. 이번 문제는 문제를 이해하는데에는 오래 걸리지 않았지만 어떻게 구현해야할지 많이 고민했던것같다. 결국 구글링을 해서 Math.sqrt라는 메소드를 찾게되었다. 이 메소드의 뜻은 n의 제곱근을 알려주는 메소드인데, n이 9라면 값은 3을 내는 메소드이다. a에 제곱근을 넣어두고 Math.pow 라는 메소드를 사용했는데 이 메소드는 (a, 2) a를 2제곱 한다는 뜻의 메소드이다. a가 2라면 2의 2승을 해준다. Math.pow(a,2)==n과 같은지 비교한후에 맞으면 a+1을한것은 2제곱하고 아닐경우에 -1을 리턴하는 방법으로 작성하였다.
구글링을 하는 모습이 멋집니다.
앞으로도 구글링 할 일이 많아질텐데 할때마다 레벨업한다고 생각하면 조금 더 재밌어질지도..?
벌써 두개의 함수를 알게 된걸 축하드립니다!