Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 1764
- dfs
- 해시 구현
- 백준 1406
- ㅣ풀이
- C/C++ 구현
- 백준
- 백준 17822
- 게리멘더링2
- 버킷 정렬
- 해시구현
- 별 찍기 10
- 구현
- 자료구조
- 스택의 특징
- Stack 이란
- 백준 5397
- 백준 17471
- AVL 시간 복잡도
- 원판 돌리기
- 백준 2447
- 시간 복잡도
- 백준 17779
- c#
- qorwns
- 5397
- 백준 1158
- heap
- 조세퍼스 순열
- 풀이
Archives
- Today
- Total
홍시홍의 프로그래밍
[백준 2022] 사다리 본문
분류 : 이분탐색
요구사항
이분 탐색을 활용하여 제시한 사다리 사이의 간격을 구하여라
풀이
수식을 활용해 mid를 구하고 mid와 c를 비교하며 이분탐색을 한다
일반적인 이분 탐색은 low<=high일때까지 반복하는데 이 문제는 어느 한계치의 차이가 날때까지 반복한다
재밋당
#include <iostream>
#include <math.h>
using namespace std;
double x, y,c;
double get_num(double num) {
double height1 = sqrt(x * x - num * num);
double height2 = sqrt(y * y - num * num);
return (height1 * height2) / (height1 + height2);
}
int main() {
scanf("%lf%lf%lf", &x, &y, &c);
double ans = 0;
double low = 0;
double high = 10000000000;
while (high - low >0.0001) {
double mid = (high + low) / 2;
//cout << mid << endl;
if (get_num(mid) >= c) {
ans = mid;
low = mid;
}
else high = mid;
}
printf("%.3lf\n", ans);
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준 2579] 계단 오르기 (0) | 2020.04.09 |
---|---|
[백준 1981] 배열에서 이동 (0) | 2020.04.04 |
[백준 2406] 안정적인 네트워크 (0) | 2020.03.31 |
[백준 2230] 수 고르기 (0) | 2020.03.30 |
[백준 2012] 등수 매기기 (0) | 2020.03.30 |
Comments