2417번: 정수 제곱근
정수가 주어지면, 그 수의 정수 제곱근을 구하는 프로그램을 작성하시오.
www.acmicpc.net
코드
n = int(input())
s, e = 0, n
ans = 0
while s <= e:
mid = (s+e)//2
if mid ** 2 < n:
s = mid+1
else:
ans = mid
e = mid-1
print(ans)
큰 범위에서 조건에 만족하는 수를 찾을 때는 매개 변수 탐색을 하면 된다. 이 방법의 시간 복잡도는 O(logN)으로 최대 크기인 2^63이 들어오더라도 빠르게 q^2 ≥ n인 가장 작은 정수 q를 찾을 수 있다.
'문제풀이 > 이분탐색' 카테고리의 다른 글
[Python/파이썬] 백준 15823번 카드 팩 구매하기 (0) | 2024.05.09 |
---|---|
[Python/파이썬] 백준 1114번 통나무 자르기 (1) | 2024.04.19 |
[Python/파이썬] 백준 3273번 두 수의 합 (0) | 2024.02.27 |
[Python/파이썬] 백준 14575번 뒤풀이 (0) | 2024.02.17 |
[Python/파이썬] 백준 1166번 선물 (0) | 2024.02.15 |
2417번: 정수 제곱근
정수가 주어지면, 그 수의 정수 제곱근을 구하는 프로그램을 작성하시오.
www.acmicpc.net
코드
n = int(input()) s, e = 0, n ans = 0 while s <= e: mid = (s+e)//2 if mid ** 2 < n: s = mid+1 else: ans = mid e = mid-1 print(ans)
큰 범위에서 조건에 만족하는 수를 찾을 때는 매개 변수 탐색을 하면 된다. 이 방법의 시간 복잡도는 O(logN)으로 최대 크기인 2^63이 들어오더라도 빠르게 q^2 ≥ n인 가장 작은 정수 q를 찾을 수 있다.
'문제풀이 > 이분탐색' 카테고리의 다른 글
[Python/파이썬] 백준 15823번 카드 팩 구매하기 (0) | 2024.05.09 |
---|---|
[Python/파이썬] 백준 1114번 통나무 자르기 (1) | 2024.04.19 |
[Python/파이썬] 백준 3273번 두 수의 합 (0) | 2024.02.27 |
[Python/파이썬] 백준 14575번 뒤풀이 (0) | 2024.02.17 |
[Python/파이썬] 백준 1166번 선물 (0) | 2024.02.15 |