STUDY/Algorithm

[백준] 13706 제곱근 python

sinawi95 2021. 3. 25. 21:45
728x90

www.acmicpc.net/problem/13706

 

13706번: 제곱근

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

www.acmicpc.net

# 내가 푼 방식
from math import isqrt
print(isqrt(int(input())))

sqrt로도 해봤는데 에러가 났다.

자리수가 커서 소수점이 생기면 오버플로우 에러가 뜬다고 한다.

그래서 integer인경우에 사용 가능한 isqrt가 있다고 해서 사용했고 통과했다.

사실 이렇게 푸는 문제는 아닌것 알고 있었다.

이분탐색을 제대로 사용하지 못해 이렇게 시도했다 


# 이분탐색
n = int(input())
low = 1
high = n

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

다른 사람의 코드를 공부하기 위해 가져왔다.

이분탐색이다. 

제곱근이니까 mid를 잡고 범위를 줄여나가는 식으로 구현했다.

상당히 머리가 좋은듯...

'STUDY > Algorithm' 카테고리의 다른 글

[백준] 12967 pqr python 못풀었다.  (0) 2021.03.26
[백준] 12871 무한 문자열  (0) 2021.03.26
[백준] 12907 동물원  (0) 2021.03.25
[백준] 16953 A->B  (0) 2021.03.25
[백준] 1149 RGB거리  (0) 2021.03.23