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
개선사항
Author And Source
이 문제에 관하여(BOJ : 정수 제곱근 [2417]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kha117/BOJ-정수-제곱근-2417저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)