문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
양의 정수 num이 주어졌을 때, num이 완전 제곱수이면 true를, 그렇지 않다면 false를 반환해라.
완전 제곱수는 어떤 정수의 제곱인 정수이다. 다시 말해, 어떤 정수를 자기 자신과 곱한 값이다.
sqrt와 같은 내장 라이브러리 함수는 사용하면 안된다.
#1
Input: num = 16
Output: true
Explanation: 4 * 4 = 16이고, 4는 정수라서 true를 반환한다.
#2
Input: num = 14
Output: false
Explanation: 3.742 * 3.742 = 14이고, 3.742는 정수가 아니라서 false를 반환한다.
class Solution {
public boolean isPerfectSquare(int num) {
int start = 1;
int end = num;
while(start <= end){
long mid = start + (end - start) / 2;
if(mid * mid == num) return true;
else if(mid * mid > num) end = (int)mid - 1;
else start = (int)mid + 1;
}
return false;
}
}