[Silver IV] 제곱근 - 13706
성능 요약
메모리: 14636 KB, 시간: 144 ms
분류
임의 정밀도 / 큰 수 연산, 이분 탐색, 수학
제출 일자
2023년 10월 26일 10:47:15
문제 설명
정수 N이 주어졌을 때, N의 제곱근을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 양의 정수 N이 주어진다. 정수 N의 제곱근은 항상 정수이며, N의 길이는 800자리를 넘지 않는다.
출력
첫째 줄에 정수 N의 제곱근을 출력한다.
import java.io.*;
import java.math.BigInteger;
class Main
{
public static void main(String args[]) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
BigInteger bi = new BigInteger(br.readLine());
bw.write(bi.sqrt().toString(0) + "\n");
bw.flush();
bw.close();
}
}
라이브러리 사용
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.math.BigInteger;
class Main
{
public static void main(String args[]) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
BigInteger bi = new BigInteger(br.readLine());
BigInteger start = new BigInteger("1");
BigInteger end = bi;
BigInteger mid;
while(true){
// start + end
mid = start.add(end);
// /2
mid = mid.divide(new BigInteger("2"));
// mid^2와 bi값 비교
int result = (mid.multiply(mid)).compareTo(bi);
// 0이면 같음
if(result == 0)
break;
else if(result == 1){
// 1이면 mid가 더 큼
end = mid.subtract(new BigInteger("1"));
}else{
//bi가 더 큼
start = mid.add(new BigInteger("1"));
}
}
bw.write(mid.toString());
bw.flush();
bw.close();
}
}
'알고리즘 - Baekjoon > Silver' 카테고리의 다른 글
[백준] 12026번 : BOJ 거리 Silver1(실버1) - JAVA[자바] (0) | 2023.10.26 |
---|---|
[백준] 16922번 : 로마 숫자 만들기 Silver2(실버2) - JAVA[자바] (0) | 2023.10.26 |
[백준] 1926번 : 그림 Silver1(실버1) - JAVA[자바] (1) | 2023.10.26 |
[백준] 3986번 : 좋은 단어 Silber4(실버4) - JAVA[자바] (0) | 2023.10.25 |
[백준] 2512번 : 예산 Silver2(실버2) - JAVA[자바] (0) | 2023.10.25 |