임의의 양의 정수 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;
for(long i = 0; i * i <= n; i++) {
if(i * i == n) {
answer = (i+1)*(i+1);
}else {
answer = -1;
}
}
return answer;
}
}
0에서 n까지 수를 하나씩 증가시켜 가면서 만약 i
의 제곱이 n
이 된다면 answer
에 i+1
의 제곱을 넣어주고, 아니라면 -1을 반환한다. 처음에 int
형으로만 풀었더니 테스트케이스 몇 개가 실패가 나길래 long
타입으로 바꾸어 주었더니 잘 돌아간다!