i * i == n
일 때까지 반복문 돌리기 - for
if
(i + 1) * (i + 1)
반환-1
반환++ 제곱근을 구하는 함수가 있다면 좋겠다고 생각했지만, 일단 검색하지 않고 내가 알고 있는 것들로 문제를 풀어보려고 했다.
class Solution {
public long solution(long n) {
long answer = 0;
for (long i = 1; i <= n; i++) {
if (i * i == n) {
answer = (i + 1) * (i + 1);
break;
} else answer = -1;
}
return answer;
}
}
class Solution {
public long solution(long n) {
long sqrt = (long) Math.sqrt(n);
if (sqrt * sqrt == n) {
return (sqrt + 1) * (sqrt + 1);
}
return -1;
}
}
"자바 제곱급 구하기"를 검색하니 Math.sqrt()
메소드가 남와서 이 메소드를 이용하여 풀어보았다.
class Solution {
public long solution(long n) {
if (Math.pow((int)Math.sqrt(n), 2) == n) {
return (long) Math.pow(Math.sqrt(n) + 1, 2);
}
return -1;
}
}
수학에서 자주 사용하는 상수드로가 함수들을 미리 구현해 놓은 클래스이다. Math 클래스는 static method라 객체를 생성하지 않고도 사용이 가능하다.
사용법
// 제곱근
Math.sqrt(25); // 5
// a^b
Math.pow(5, 2); // 25
// 난수 생성
(int)(Math.random() * 100); // 0 ~99
// 절댓값
Math.abs(-17); // 17
// 최댓값/최솟값
Math.max(1.1, 1.1419); // 1.1419
Math.min(-7, -11); // -11