음수가 아닌 숫자 n이 있다고 가정하고 r * r =n이 되도록 숫자 r을 찾고 가장 가까운 정수로 내림해야 합니다. 내장된 제곱근 함수를 사용하지 않고 이 문제를 해결해야 합니다.
따라서 입력이 1025와 같으면 출력은 32가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- n <=1이면
- 반환 n
- 시작:=1, 끝:=n
- 시작하는 동안 <끝, 수행
- mid :=시작 + 끝/2
- mid * mid <=n이면
- 시작 :=중간 + 1
- 그렇지 않으면
- 끝 :=중간
- 반환 시작 - 1
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
class Solution: def solve(self, n): if n <= 1: return n start, end = 1, n while start < end: mid = start + end >> 1 if mid * mid <= n: start = mid + 1 else: end = mid return start - 1 ob = Solution() print(ob.solve(1025))
입력
1025
출력
32