BOJ : 정수 제곱근 [2417]

출처 : [https://www.acmicpc.net/problem/2417]

문제

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

입력

첫째 줄에 정수 n이 주어진다. (0 ≤ n < 2^63)

출력

첫째 줄에 q^2 ≥ n인 가장 작은 음이 아닌 정수 q를 출력한다.


아이디어

입력받은 정수 값과 0의 중간값을 정한다.
중간값의 제곱 값이 입력받은 정수보다 작으면 왼쪽값을 중간값 + 1로 지정
중간값의 제곱 값이 입력받은 정수보다 크면 오른쪽값을 중간값 - 1 로 지정


코드

Mine (오답)


n = int(input())

l, r = 0, n

while l < r:
    mid = (l + r) // 2
    if  mid ** 2 < n:
        l = mid + 1
    else:
        r = mid - 1
print(l)

개선사항


Clone

#1
n=int(input())
print(int(n**0.5)+1 if n**0.5%1!=0 else int(n**0.5))

#2 (이분탐색으로 푼 코드 아님)
from math import ceil

n = int(input())
q = ceil(n ** 0.5)
print(q)

출처 : https://m.blog.naver.com/be_ok91/222075257924

개선사항

좋은 웹페이지 즐겨찾기