반응형
출처: http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=523&sca=30
Approach
① low + high = 1 + 263- 1 = 263으로 long long 범위를 벗어나 Overflow 발생
→ unsigned long long 사용
② mid * mid = 262 * 262 = 2124 이기 때문에 unsigned long long으로도 처리할 수 없습니다.
이런 경우에는 mid <= target / mid로 처리할 수 있습니다.
(1 ≤ mid ≤ N 범위이기 때문에 0으로 나누는 오류는 없습니다.)
Binary Search (이분 탐색)
Binary Search (이분 탐색) 정렬된 자료에서 목표값을 찾고자 할 때, 사용되는 탐색기법 O(logN) 리스트 중간의 값(mid)을 선택하여 찾고자 하는 값과 비교하는 방식 분할 정복 알고리즘(Divide and Conquer Al
zoosso.tistory.com
[탐색] Parametric Search
Parametric Search 최적화 문제를 결정 문제로 바꿔 푸는 것 O(logN) ex) Binary Search (이분 탐색)을 이용해서 Lower/Upper Bound를 구하는 경우가 많습니다. Binary Search (이분 탐색) Binary Search (이분 탐..
zoosso.tistory.com
Code
#include <stdio.h>
typedef unsigned long long ULL;
ULL N;
ULL bsearch(ULL low, ULL high, ULL target) {
ULL ans = target, mid;
while (low <= high) {
mid = (low + high) / 2;
if (mid <= target/mid) ans = mid, low = mid + 1;
else high = mid - 1;
}
return ans;
}
int main(){
// freopen("input.txt", "r", stdin);
scanf("%llu", &N);
printf("%llu", bsearch(1, N, N));
}
반응형
'PS 문제 풀이 > Jungol' 카테고리의 다른 글
[Jungol] 정올 1082 화염에서탈출(SLIKAR) (0) | 2021.03.04 |
---|---|
[Jungol] 정올 2606 토마토(초) (0) | 2021.03.04 |
[Jungol] 정올 1156 책 복사하기2 (0) | 2021.03.02 |
[Jungol] 정올 2306 두 용액 (0) | 2021.02.28 |
[Jungol] 정올 3429 로봇 (0) | 2021.02.28 |
댓글