너와!나의!알고!리즘!/백준
[백준 #13706, Python] 제곱근
moongchi98
2021. 3. 30. 22:07
[풀이]
def binary_search(start,end):
N = end
while True:
middle = (start+end)//2 #여기서 int((start+end)/2)로 구하면 시간 초과 발생한다.. 왜지?
if middle ** 2 == N:
return middle
if middle ** 2 < N:
start = middle
elif middle ** 2 > N:
end = middle
N = int(input())
print(binary_search(1,N))
🤪 처음엔 브론즈+걍 제곱근 구하기 길래,, 뭐야 이거,,? 개쉽자나,,? 이랬는데 정답율이 30%대여서 이상하다했는데, 역시 세상은 호락호락 하지 않았숴,,!!!!!!
그냥 우리가 계산해서 제곱근을 구하면 OverFlow어쩌구란 에러가 발생한다.. 해결책은 이진탐색!
이번에 문제들은 모두 예전에 배웠던 알고리즘 수업들을 내가 다 까먹었다는 것을 강조해주는 문제들같네,,^^,,
그런데 여기서 middle = int((start+end)/2)로 주면 계속 에러가 발생했다. 그래서 그냥 //으로 몫만 구하니까 통과다.
옛날에 교수님이 //이게 더 오래걸린다고 하셔,int쓰는 습관 들인건데,,참눼,,