홍시홍의 프로그래밍

[백준 2022] 사다리 본문

알고리즘 문제풀이/백준

[백준 2022] 사다리

홍시홍 2020. 4. 4. 01:33

분류 : 이분탐색

 

요구사항

이분 탐색을 활용하여 제시한 사다리 사이의 간격을 구하여라

 

풀이

수식을 활용해 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