알고리즘 공부/boj
boj 2417: 정수 제곱근
소연쏘
2021. 3. 15. 23:22
첨에 아무 생각 없이 mid*mid를 롱 타입으로 계산했는데 오버 플로우가 발생해서 BigInteger로 계산하도록 했다.
import java.math.BigInteger;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
long n = in.nextLong();
long end = n;
long start = 0;
long answer = n;
while (start <= end) {
long mid = (start + end) / 2;
BigInteger bigMid = BigInteger.valueOf(mid);
if (bigMid.multiply(bigMid).compareTo(BigInteger.valueOf(n)) >= 0) {
answer = Math.min(answer, mid);
end = mid - 1;
} else {
start = mid + 1;
}
}
System.out.println(answer);
}
}
- java에서 자료형
- Long - 64비트(-9223372036854775808 ~ 9223372036854775807)
- BigInteger - 무한한 값