728x90
# 내가 푼 방식
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 |