Programming/백준

[백준] 2417번 : 정수 제곱근

조용한고라니 2021. 3. 20. 13:55
반응형
 

2417번: 정수 제곱근

정수가 주어지면, 그 수의 정수 제곱근을 구하는 프로그램을 작성하시오.

www.acmicpc.net


[이진탐색, Binary Search]

long타입의 정수 중 제곱했을 때 n보다 큰 값중 가장 작은 값을 찾는 문제.

left = 0, right = n으로 세팅하고 이진탐색을 진행하면 쉽게 찾는다.

# Code </>

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        long n = Long.parseLong(br.readLine()), left = 0, right = n, min = Long.MAX_VALUE;;

        while(left <= right){

            long mid = (left + right) / 2;
            long value = (long) Math.pow(mid, 2);

            if(value >= 0){

                if(value >= n){

                    min = Math.min(min, mid);
                    right = mid - 1;
                }
                else
                    left = mid + 1;
            }
        }
        System.out.println(min);
    }
}
반응형