Doby's Lab

백준 13706번: 제곱근 (Python) 본문

PS/BOJ

백준 13706번: 제곱근 (Python)

도비(Doby) 2022. 8. 8. 23:42

https://www.acmicpc.net/problem/13706

 

13706번: 제곱근

첫째 줄에 양의 정수 N이 주어진다. 정수 N의 제곱근은 항상 정수이며, N의 길이는 800자리를 넘지 않는다.

www.acmicpc.net


Solved By: Binary Search

 

주어지는 수가 엄청 크기 때문에 Python을 이용했습니다. Python의 math 패키지에 있는 sqrt를 사용하여 문제를 풀려 했지만 연산을 해야 하는 값이 너무 커서 OverflowError가 나왔습니다.

 

그래서 이분 탐색을 돌려서 만족하는 값이 있으면 출력하도록 코드를 썼습니다.

from math import sqrt

n = int(input())
low, high = 1, n

while low <= high:
    mid = (low + high) // 2
    #print(mid)
    
    if(mid * mid < n):
        low = mid + 1
    elif(mid * mid > n):
        high = mid - 1
    else:
        print(mid)
        break

 

728x90

'PS > BOJ' 카테고리의 다른 글

백준 13306번: 트리 (C++)  (0) 2022.08.13
백준 1305번: 광고 (C++)  (0) 2022.08.10
백준 14935번: FA (Python)  (0) 2022.08.08
백준 7501번: Key (C++)  (0) 2022.08.07
백준 17633번: 제곱수의 합 (More Huge) (C++)  (0) 2022.08.07