얼렁뚱땅 백준 문제풀이

[백준 문제풀이] 얼렁뚱땅 2417번 정수 제곱근 풀이

MOSTAR 2022. 5. 17. 19:26

아래 math 패키지를 이용하면 이렇게 된다

elif를 써준 이유는 분명 배웟는데도 모르겠는 부동소숫점 문제 뭐시기때문에

예외가 있다고 한다.. ... ㅜ

import math

n = int(input())
answer = math.sqrt(n)
if answer*answer < n :
	print(int(answer)+1)
elif str(answer).split('.')[1] == '0' :
	print(int(answer))
else :
	print(int(answer)+1)

하지만 그냥 그런 생각 없이 이분탐색으로 풀면 된다

이게 시간은 아주 쪼금 더 걸리지만 괜찮다 굿

n = int(input())

start = 0
end = 2**32

answer = -1

while True :
	if start > end :
		break
	mid = (start+end)//2
	if mid**2<n :
		start = mid + 1
	elif mid**2 > n :
		answer = mid
		end = mid - 1
	else :
		answer = mid
		break


print(answer)

 

마법사가 토네이도 부르던거 하다가 이거하니까 쉽다 야호 .. ㅜ